gpt4 book ai didi

c++ - CMake add_definitions 不局限于当前目录

转载 作者:行者123 更新时间:2023-11-28 02:09:16 42 4
gpt4 key购买 nike

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/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com