如何将项目特定变量传递到子目录?我想知道是否有一种“官方”方式可以做到这一点:
# (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
of my_library
.
回答评论中修改后的问题(我怎样才能通过不同的值),因此除 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}")
或者您可以将其放入函数中,并且不需要恢复更改的变量,因为函数具有作用域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)