我正在尝试为一个相当大的项目设置一个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。
知道我做错了什么吗?