Macros Can';t更新CMake marcro内的变量
如何修改CMake宏中的参数 我正在使用CMake 2.6版,无法更新变量 以下是一个基本示例:Macros Can';t更新CMake marcro内的变量,macros,cmake,Macros,Cmake,如何修改CMake宏中的参数 我正在使用CMake 2.6版,无法更新变量 以下是一个基本示例: # macro definition MACRO(MYTEST RETVAL) message("input RETVAL=${RETVAL}") SET(RETVAL "new return value") message("after update RETVAL=${RETVAL}") ENDMACRO(MYTEST) # call macro with parameter '_test' s
# macro definition
MACRO(MYTEST RETVAL)
message("input RETVAL=${RETVAL}")
SET(RETVAL "new return value")
message("after update RETVAL=${RETVAL}")
ENDMACRO(MYTEST)
# call macro with parameter '_test' set to 'init'
SET(_test "init")
MYTEST("${_test}")
message("after macro call:${_test}")
这张照片是:
input RETVAL=init
after update RETVAL=init
after macro call:init
变量\u test
从不修改。我能做些什么使它工作
感谢使用CMake宏,您需要非常仔细地区分宏参数名称、变量名称、变量值等。从CMake代码中不太清楚您想要实现什么,但我假设您想要使用宏将
\u test
设置为字符串新返回值
这是实现以下目标的代码:
macro(MYTEST RETVAL)
message("input variable name: RETVAL=${RETVAL}")
message("input variable value: ${${RETVAL}}")
set(${RETVAL} "new return value")
message("variable name after update: RETVAL=${RETVAL}")
message("variable value after update: ${${RETVAL}}")
endmacro()
set(_test "init")
MYTEST(_test)
message("after macro call: ${_test}")
注意事项:
- 您希望宏修改传入的变量。该变量的名称存储在宏参数
RETVAL
中。因此,您需要设置(${RETVAL}…
来设置变量。您的代码正在创建名为RETVAL
的变量
- 您需要将变量的名称传递给宏。所以你必须通过
\u测试
,而不是${\u测试}
。您的代码正在使用文本init
调用宏