#cmake
#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)
Насколько я понимаю, мы используем filesystem
и рекурсивно захватываем все файлы с *.cc
*.hpp
расширением и и устанавливаем его в arg
переменную.
Чего я не понимаю, так это
set(${arg} ${${arg}} PARENT_SCOPE)
Я понимаю, что первый аргумент заключается в том, чтобы установить все, что ${${arg}}
относится к arg
переменной in PARENT_SCOPE
. Что означает вложенный ${${arg}}
?
Ответ №1:
${${arg}}
является вложенной ссылкой на переменную, см. Ссылки на переменные.
Как объясняется в документации, он оценивается изнутри. В вашем случае значение ${arg}
используется как имя переменной и само вычисляется.
Пример
set(foo "42")
set(arg "foo")
message(STATUS "${${arg}}")
будет напечатано 42
.
Комментарии:
1. Спасибо, именно то, что я искал.