在我们的项目中,某些模块仅包含在特定配置中。目前,我们使用这样的方法实现这一目标:
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
以外的配置中构建?
答案 0 :(得分:3)
将我的评论转化为答案
由于CMake需要在配置步骤中浏览所有CMakeLists.txt
文件,答案是肯定的,您必须始终致电add_subdirectory()
。
我认为你要找的是EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
目标属性。