当前位置:  开发笔记 > 编程语言 > 正文

推送/弹出一个cmake变量

如何解决《推送/弹出一个cmake变量》经验,为你挑选了1个好方法。

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

你甚至可以扩展它,这样如果你按下弹出弹出窗口就可以了.但我想知道有一种很好的方式可以本地做到这一点吗?



1> Florian..:

不,没有一种很好的方式本地做到这一点.

您可以将ADD_SUBDIRECTORY()所有变量修改移动到FUNCTION()自身中.这会给你自己的变量范围:

FUNCTION( ADD_MY_SUBDIR )
    SET ( SOME_VARIABLE "temporary value" )
    ADD_SUBDIRECTORY( "subdir" )
ENDFUNCTION ()

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有