如何基于生成器表达式CONFIG而不是CMAKE_BUILD_TYPE添加sub_subdirectory?

时间:2018-05-24 10:26:49

标签: cmake

在我们的项目中,某些模块仅包含在特定配置中。目前,我们使用这样的方法实现这一目标:

if (CMAKE_BUILD_TYPE STREQUAL "my_config")
    add_subdirectory(only_in_my_config)
endif()

然而,这种方法的问题在于它不能很好地与多配置生成器一起使用(目前看来只有Visual Studio和Xcode)。

要正确支持多配置生成器AFAIK,我们应该使用$<CONFIG:my_config> generator expression。但是,这些不能与add_subdirectory一起使用。

如何解决这个问题?

我想我们必须始终添加所有子目录。但是,如何防止他们的目标在my_config以外的配置中构建?

1 个答案:

答案 0 :(得分:3)

将我的评论转化为答案

由于CMake需要在配置步骤中浏览所有CMakeLists.txt文件,答案是肯定的,您必须始终致电add_subdirectory()

我认为你要找的是EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>目标属性。