cmake将唯一-D传递给子目录

时间:2012-06-01 11:30:07

标签: c++ configuration cmake subdirectory

我正在尝试为一个相当大的项目设置一个cmake系统,并且我在为项目中每个子目录中的所有文件传递一个唯一的定义到C ++编译器的阶段。我做的是:

在CMakeLists.txt的顶级目录中:

set_property(
    DIRECTORY
    APPEND PROPERTY COMPILE_DEFINITIONS LOG_FAPP_PKG=CORE
)

然后

add_subdirectory(Modules)

和CMakeListst.txt中的Modules子目录:

add_subdirectory(ModuleConfigurationProvider)
set_property(
    DIRECTORY ModuleConfigurationProvider
    APPEND PROPERTY COMPILE_DEFINITIONS LOG_FAPP_MODULE=CONFPROVIDER
)

但是我在Makefile中得到的只是第一级(即:LOG_FAPP_PKG)被定义,第二级(LOG_FAPP_MODULE)被完全忽略。

我也尝试在ModuleConfigurationProvider目录中输入CMakeLists.txt

set_property(
    DIRECTORY
    APPEND PROPERTY COMPILE_DEFINITIONS LOG_FAPP_MODULE=CONFIGPROVIDER
)

甚至是

add_definitions(-DLOG_FAPP_MODULE=CONFIGPROVIDER)

但仍无效。我打印出了当前目录的定义,它们在目录中正确显示,但似乎它们没有传播到生成的makefile。

知道我做错了什么吗?

0 个答案:

没有答案