【发布时间】:2014-08-07 22:21:50
【问题描述】:
我目前正在处理我正在尝试纠正的不太理想的 CMake 设置。顶层 CMakeListsMain.txt 包含所有项目依赖和使用的编译器设置、包含目录、宏等。我的源代码树包含 许多 项目,但我在此处对其进行了缩减。
src/
CMakeListsMain.txt
project1/
-->CMakeLists.txt
project2/
-->CMakeLists.txt
headers/
-->source headers for every project
例如 CMakeListsMain.txt 看起来像这样,但更复杂:
MACRO(USE_BOOST target)
target_link_libraries(${target} boost_thread-mt boost_filesystem-mt boost_regex-mt boost_system-mt)
ENDMACRO(USE_BOOST)
MACRO(USE_PTHREAD target)
target_link_libraries(${target} pthread)
ENDMACRO(USE_PTHREAD)
add_subdirectory(project1)
add_subdirectory(project2)
项目 1 和 2 都使用顶层 CMakeListsTop.txt 中的宏和其他设置
以前如果我想构建一个项目,CMake 必须在每个目录上运行,这不好。
我的问题是,如果我想分别构建每个项目,我将如何访问这些宏和其他设置。目前,我已将宏抽象到一个不同的文件中,并将该文件包含在每个项目的 CMakeLists.txt 中。这样做我还必须使用绝对路径来引用源树中的头文件,而不是使用CMAKE_SOURCE_DIR/headers。
未经批准,我无法真正更改源代码树的布局,但有没有更简单的方法可以做到这一点或我忽略了什么?
【问题讨论】: