如标题中所述,我想在cmake中编写一个"nice"函数,它能够修改一个作为参数传递给该函数的变量.
我能想到的唯一方法就是丑陋:
功能定义
function(twice varValue varName)
set(${varName} ${varValue}${varValue} PARENT_SCOPE)
endfunction(twice)
Run Code Online (Sandbox Code Playgroud)
用法
set(arg foo)
twice(${arg} arg)
message("arg = "${arg})
Run Code Online (Sandbox Code Playgroud)
结果
arg = foofoo
Run Code Online (Sandbox Code Playgroud)
在我看来,根本没有可以传递的变量的真正概念?!我觉得cmake有一些基本的东西,我还没有接受.
那么,有更好的方法吗?
非常感谢!
Phi*_*ipp 40
您不需要传递变量的值和名称.名称就足够了,因为您可以通过名称访问该值:
function(twice varName)
SET(${varName} ${${varName}}${${varName}} PARENT_SCOPE)
endfunction()
SET(arg "foo")
twice(arg)
MESSAGE(STATUS ${arg})
Run Code Online (Sandbox Code Playgroud)
输出"foofoo"
我使用这两个宏进行调试:
macro(debug msg)
message(STATUS "DEBUG ${msg}")
endmacro()
macro(debugValue variableName)
debug("${variableName}=\${${variableName}}")
endmacro()
Run Code Online (Sandbox Code Playgroud)
用法:
set(MyFoo "MyFoo's value")
debugValue(MyFoo)
Run Code Online (Sandbox Code Playgroud)
输出:
MyFoo=MyFoo's value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26066 次 |
最近记录: |