cmake - 如何在 cmake 2.8.12 中删除每个目标的定义

标签 cmake

我正在使用 cmake 2.8.12 .

我通过调用 使用具有相同定义的多个目标add_definitions() .
我想知道如何删除 的这些定义单例目标并将它们替换为一些其他定义或默认定义,例如我没有调用 add_definitions()。

最佳答案

这里更好的方法是为单个目标而不是全局添加定义。

为此,您应该使用 target_compile_definitions而不是 add_definitions
例如,代替

add_definitions(-DSOMEMACRO)
add_executable(myExecutable main.cpp)

你会用
add_executable(myExecutable main.cpp)
target_compile_definitions(myExecutable PUBLIC -DSOMEMACRO)

这允许您对定义进行细粒度控制,并且通常是设置它们的首选方式。
我认为为每个目标添加定义比从某些目标中删除定义更容易。

关于cmake - 如何在 cmake 2.8.12 中删除每个目标的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049463/

相关文章:

c++ - 将库 .h 附加到 makefile

c++ - Visual Studio 2017 msvc vs nvcc __cplusplus 宏不匹配

java - 正确设置 JAVA_HOME 后 Cmake 找不到 JNI

c++ - CMakelist - if(DEFINED) 语法

c++ - 如何强制 cmake 链接 Homebrew 桶专用库

c++ - CMake:Eigen3 包含第三个项目所需的目录

c++ - 通过 dll 边界传递对 STL vector 的引用

c++ - 编译时 OpenCV Qt undefined reference 错误

ubuntu - 在 Ubuntu 中编译基于 OpenCV 和 ROS 的项目

cmake - cmake中使用qrc编译10MB+资源文件导致堆空间分配失败