推送/弹出一个 cmake 变量



有没有办法在执行另一个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} )

我想我甚至可以自己做一些黑客功能,像这样(未经测试):

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 ()

最新更新