【发布时间】:2015-09-08 05:10:04
【问题描述】:
如何将项目特定变量传递到子目录?我想知道是否有这样做的“官方”方式:
# (CMAKE_BUILD_TYPE is one of None, Debug, Release, RelWithDebInfo)
# ...
# set specific build type for 'my_library'
set( CMAKE_BUILD_TYPE_COPY "${CMAKE_BUILD_TYPE}" )
set( CMAKE_BUILD_TYPE "Release" )
add_subdirectory( "my_library" )
set( CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_COPY} )
# continue with original build type
# ...
库/子目录my_library 应始终使用"Release" 类型构建,主项目和其他子目录应使用配置定义的类型构建。我无法修改CMakeLists.txt的my_library。
【问题讨论】:
-
关于
set(CMAKE_BUILD_TYPE Release):stackoverflow.com/a/24470998/2288008 -
你的问题是将不同的标志传递给不同的目录?
-
更多细节见@ruslo评论/链接。只是想补充一点——如果我们谈论的是 VS——你在打开生成的 VS 解决方案时在“配置管理器”中看到的内容被硬编码到 VS 生成器中。见cmVisualStudio10TargetGenerator.cxx。项目的配置将始终与解决方案的配置相匹配。我建议将
my_library生成为external project。 -
@coincoin:不,我的项目使用外部库,它们是 git 子模块。这些有自己的
CMakeLists.txt,所以我无法修改这些。我希望将其中一个库构建为Release,因为这是一个非常重的 OpenGL 库。但我想在我自己的代码中调试符号,即Debug。 -
@ruslo:感谢您的链接。这意味着我不应该将
CMAKE_BUILD_TYPE传递给其他 cmake 目录。我的问题仍然悬而未决;如何在不更改当前CMakeLists.txt的值的情况下以一种不错的方式传递不同的值。
标签: cmake