Cmake 如何编写一个通过引用传递变量的好函数?
正如在标题中所说,我想在cmake中编写一个“nice”函数,它能够修改作为参数传递到该函数中的变量 我能想到的唯一方法就是丑陋: 函数定义 用法 结果 在我看来,根本没有真正的变量概念可以传递?! 我觉得cmake有一些基本的东西我还没有接受 那么,有没有更好的方法呢Cmake 如何编写一个通过引用传递变量的好函数?,cmake,Cmake,正如在标题中所说,我想在cmake中编写一个“nice”函数,它能够修改作为参数传递到该函数中的变量 我能想到的唯一方法就是丑陋: 函数定义 用法 结果 在我看来,根本没有真正的变量概念可以传递?! 我觉得cmake有一些基本的东西我还没有接受 那么,有没有更好的方法呢 非常感谢 不需要传递变量的值和名称。名称足够了,因为您可以通过名称访问值: function(twice varName) SET(${varName} ${${varName}}${${varName}} PARENT_S
非常感谢 不需要传递变量的值和名称。名称足够了,因为您可以通过名称访问值:
function(twice varName)
SET(${varName} ${${varName}}${${varName}} PARENT_SCOPE)
endfunction()
SET(arg "foo")
twice(arg)
MESSAGE(STATUS ${arg})
输出“foooo”我使用这两个宏进行调试:
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
非常感谢,它起作用了。然而,我注意到一些奇怪的行为,请参阅建议您在修改参数时使用宏。您的操作是正确的,但这不是您的错。CMake缺少真正脚本语言的基本概念。
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