首页 > 解决方案 > CMake - 在目录的多个版本之间切换

问题描述

我是 CMake 的新手。我必须通过以下方式调整 CMakeLists.txt 文件:

这些项目有几个子目录,我们从现在开始将其称为“子目录”。其余的(基于 C++ 的)代码可以使用“#include”语法包含此目录中的文件。现在我基本上想要做的是提供多个版本的 subdir(subdir1、subdir2 等)并使用 CMake 变量在它们之间切换。然而,对于这个开关应该是透明的代码,它只看到一个目录“subdir”。应该确保 gcc 注意到这个开关,并在变量改变时重建一切。

在您看来,实现这一目标的最佳方式是什么?至少应该在 Windows 和 Linux 上工作。

问候

标签: cmake

解决方案


开发@alex-reinking 在评论中提出的建议。

CMakeLists.txt您可以在配置时有选择地选择要包含的目录,例如:


# expose cmake option to control the subdir
option(USE_IMPL "The implementation subdir" defaultSubdir)

# include it
add_subdirectory("${USE_IMPL}")

target_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/${USE_IMPL}")
target_link_libraries(TheTarget library_target_in_subdir)


推荐阅读