如何修改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' set to 'init'
SET(_test "init")
MYTEST("${_test}")
message("after macro call:${_test}")
Run Code Online (Sandbox Code Playgroud)
这打印:
input RETVAL=init
after update RETVAL=init
after macro call:init
Run Code Online (Sandbox Code Playgroud)
_test
永远不会修改变量.我能做些什么才能让它发挥作用?
谢谢
使用CMake宏,您需要非常仔细地区分宏参数名称,变量名称,变量值等.从您的CMake代码中您想要实现的目标并不十分清楚,但我假设您要使用宏设置_test
为字符串new return value
.
这是完成该任务的代码:
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}")
Run Code Online (Sandbox Code Playgroud)
注意事项:
您希望宏修改传入的变量.该变量的名称存储在宏参数中RETVAL
.所以你需要set(${RETVAL} ...)
设置varibale.您的代码正在创建一个名为的变量RETVAL
.
您需要传递变量的名称才能更改为宏.所以你必须通过_test
,而不是${_test}
.您的代码使用文本调用宏init
.
归档时间: |
|
查看次数: |
304 次 |
最近记录: |