我正在尝试为一个相当大的项目设置一个 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)被完全忽略。
我还尝试将 CMakeLists.txt 放入 ModuleConfigurationProvider 目录中
set_property(
DIRECTORY
APPEND PROPERTY COMPILE_DEFINITIONS LOG_FAPP_MODULE=CONFIGPROVIDER
)
甚至是
add_definitions(-DLOG_FAPP_MODULE=CONFIGPROVIDER)
但仍然无法正常工作。我已经打印出当前目录的定义,它们在目录中正确显示,但似乎它们没有传播到生成的 makefile。
知道我做错了什么吗?