1

我正在尝试为一个相当大的项目设置一个 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。

知道我做错了什么吗?

4

0 回答 0