Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 如何修改现有变量?_Cmake - Fatal编程技术网

Cmake 如何修改现有变量?

Cmake 如何修改现有变量?,cmake,Cmake,我想修改传递给函数的变量。以下是我编写的代码: FUNCTION(TEST var) set(${var} "ABC") message(${var}) # 2) 123 set(${var} "ABC" PARENT_SCOPE) ENDFUNCTION(TEST) set(v "123") message(${v}) # 1) 123 TEST(${v}) message(${v}) # 3) 123 为什么所有三个输出都打印123。我期望#2和#3打印ABC 如

我想修改传递给函数的变量。以下是我编写的代码:

FUNCTION(TEST var)
    set(${var} "ABC")
    message(${var}) # 2) 123
    set(${var} "ABC" PARENT_SCOPE)
ENDFUNCTION(TEST)

set(v "123")
message(${v}) # 1) 123
TEST(${v})
message(${v}) # 3) 123
为什么所有三个输出都打印
123
。我期望
#2
#3
打印
ABC


如果我通过这样的变量-
测试(v)
,我还有其他输出:
#1-123
#2-v
#3-ABC
。为什么会这样?有什么区别?

您正在将
v
的内容传递给
TEST()
。因此,它应该是:

FUNCTION(TEST var)
    set(${var} "ABC")
    message(${${var}})
    set(${var} "ABC" PARENT_SCOPE)
ENDFUNCTION(TEST)

set(v "123")
message(${v}) 
TEST(v)
message(${v}) 
参考


谢谢。这适用于“普通”变量,但不适用于列表变量。这是什么“${${var}}”?为什么这里需要双大括号?@nikitablack这也适用于列表变量,因为CMake中的列表只是分号分隔的字符串。双解引用需要双大括号(首先是变量的名称,然后是该变量的内容)