- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
documentation对于 add_definitions
声明:
Adds definitions to the compiler command line for sources in the current directory and below
但是当我使用它时——不管我把它放在哪里——定义被添加到整个项目的每个目标并提示完全重建。在我要添加的目标的 CMakeLists.txt 中:
if (MY_OPTION)
add_definitions(-DMY_DEFINITION)
endif()
-DMY_DEFINITION
出现在整个项目中每个目标的 ninja.build 文件中。我试过在文件夹层次结构中上下移动这段代码,但无济于事。如果有所不同,我仍在使用 CMake 2.8.12,但那里的文档是相同的。我是否以某种方式滥用了它,或者这是预期的行为?
编辑:关于项目结构的一些细节,以回应@Tsyvarev 的问题:
3rdParty/
Dep1/
CMakeLists.txt
...
CustomDep1/
CMakeLists.txt
MyProject/
Project.cmake
CMakeLists.txt
MyTarget1/
CMakeLists.txt
该选项在 Project.cmake 中指定。只有 MyTarget1 需要定义。我尝试将 add_dependencies
放在 MyProject/CMakeLists.txt 和 MyTarget1/CMakeLists.txt 中。它传播到 3rdParty、CustomDep1 等中的所有内容。
最佳答案
参见 this post并使用 COMPILE_DEFINITIONS
微调目标或特定源。
此外,add_definitions
在当前目录及以下目录中工作,当前目录是包含 Project.cmake 的 CMakeLists.txt 所在的目录。
关于c++ - CMake add_definitions 不局限于当前目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36334724/
我正在尝试通过 CMake 定义一个预处理器变量,但不幸的是它似乎不起作用。 以下是我的 C++ 代码: #ifdef hehe_test #define it_exists "i
我正在尝试在使用 CMake 配置的 C++ 项目中的编译器标志中传递一个定义,如下所示,正如博文 here 中所建议的那样: execute_process(COMMAND git describe
documentation对于 add_definitions 声明: Adds definitions to the compiler command line for sources in the
我需要有条件地编译几部分代码,具体取决于系统上是否存在某些库。它们的存在是在 CMake 配置阶段确定的,我计划使用预处理器定义(如 #ifdef(LIB_DEFINED) ... #endif)告诉
我正在尝试替换硬编码的预处理器 #define MY_FILE_PATH "/usr/local/myfile" 在 cmake 中使用 add_definitions add_definitions
目前我的 CMakeLists.txt 中有以下内容(下面只列出了这个问题的重要部分): option(NORMALS_WITH_OPENMP "Enable OpenMP for estimatin
我是 CMake 的新手。我对 CMake 文件中的 add_definitions 和 set 感到非常困惑。 例如,add_definitions(-D_GLIBCXX_USE_CXX11_ABI
在我的 CMakeLists.txt 中,全局 C 和 CXX 标志是使用命令 add_definitions() 设置的和 add_compile_options . 多次尝试检索 C/CXX 标志
在 CMake 文档中,我们可以阅读: add_definitions Adds flags to the compiler command line for sources in the curre
我是一名优秀的程序员,十分优秀!