如何将项目特定变量传递到子目录?我想知道是否有一个"官员"这样做的方式:
# (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"
的buildt,主项目和其他子目录应该是由配置定义的类型构建的。我无法修改CMakeLists.txt
的{{1}}。
答案 0 :(得分:6)
在评论中回答修改后的问题(如何传递不同的值),以便CMAKE_BUILD_TYPE`以外的其他值:
没有额外的机器。如果变量是项目特定的,则只需设置变量:
set(MYLIB_SOME_OPTION OFF)
add_subdirectory(mylib)
如果它更通用,你需要还原它:
set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
set(BUILD_SHARED_LIBS OFF)
add_subdirectory(mylib)
set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
或者你可以把它放到一个函数中,你不需要恢复你改变的变量,因为函数有一个范围。