如标题中所述,我想在cmake中编写一个“nice”函数,它能够修改一个作为参数传递给该函数的变量。
我能想到的唯一方法就是丑陋:
功能定义
function(twice varValue varName)
set(${varName} ${varValue}${varValue} PARENT_SCOPE)
endfunction(twice)
用法的
set(arg foo)
twice(${arg} arg)
message("arg = "${arg})
结果
arg = foofoo
在我看来,根本没有人可以传递的变量的真正概念?! 我觉得cmake有一些基本的东西,我还没有接受。
那么,有更好的方法吗?
非常感谢!
答案 0 :(得分:38)
您无需传递变量的值和名称。名称就足够了,因为您可以通过名称访问该值:
function(twice varName)
SET(${varName} ${${varName}}${${varName}} PARENT_SCOPE)
endfunction()
SET(arg "foo")
twice(arg)
MESSAGE(STATUS ${arg})
输出“foofoo”
答案 1 :(得分:7)
我使用这两个宏进行调试:
macro(debug msg)
message(STATUS "DEBUG ${msg}")
endmacro()
macro(debugValue variableName)
debug("${variableName}=\${${variableName}}")
endmacro()
用法:
set(MyFoo "MyFoo's value")
debugValue(MyFoo)
输出:
MyFoo=MyFoo's value