CMake 中 ${${arg}} 的含义?

bee*_*oop 4 cmake

我正在寻找 CMake 中以下函数的解释:

function(file_grab src arg)
file(GLOB_RECURSE ${arg} CONFIGURE_DEPENDS
 ${src}/*.cc
 ${src}/*.hpp
)
set(${arg} ${${arg}} PARENT_SCOPE)
endfunction(file_grab)
Run Code Online (Sandbox Code Playgroud)

据我了解,我们使用并递归地获取所有带有和扩展名filesystem的文件并将其设置为变量。我不明白的是*.cc*.hpparg

set(${arg} ${${arg}} PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)

我理解第一个参数是设置中变量${${arg}}的任何值。嵌套有什么作用?argPARENT_SCOPE${${arg}}

hav*_*ogt 5

${${arg}}嵌套变量引用,请参阅变量引用

正如文档中所解释的,它是从内到外进行评估的。在您的情况下, 的值${arg}用作变量名并对其自身进行评估。

例子

set(foo "42")
set(arg "foo")
message(STATUS "${${arg}}")
Run Code Online (Sandbox Code Playgroud)

将打印42.