有没有办法在执行另一个CMakeLists.txt
文件时临时更改CMake变量.像这样的东西?
PUSH ( SOME_VARIABLE ) SET ( SOME_VARIABLE "temporary value" ) ADD_SUBDIRECTORY( "subdir" ) POP ( SOME_VARIABLE )
我知道你可以这样做:
SET ( SOME_VARIABLE_TMP "${SOME_VARIABLE}" ) SET ( SOME_VARIABLE "temporary value" ) ADD_SUBDIRECTORY( "subdir" ) SET ( SOME_VARIABLE "${SOME_VARIABLE_TMP} )
我想我甚至可以自己做一些hacky函数,像这样(未经测试):
FUNCTION ( PUSH VARNAME ) SET ( ${VARNAME}_TMP "${${VARNAME}}" PARENT_SCOPE ) ENDFUNCTION () FUNCTION ( POP VARNAME ) SET ( ${VARNAME} "${${VARNAME}_TMP}" PARENT_SCOPE ) ENDFUNCTION ()
你甚至可以扩展它,这样如果你按下弹出弹出窗口就可以了.但我想知道有一种很好的方式可以本地做到这一点吗?
不,没有一种很好的方式本地做到这一点.
您可以将ADD_SUBDIRECTORY()
所有变量修改移动到FUNCTION()
自身中.这会给你自己的变量范围:
FUNCTION( ADD_MY_SUBDIR ) SET ( SOME_VARIABLE "temporary value" ) ADD_SUBDIRECTORY( "subdir" ) ENDFUNCTION ()