CMAKE_CURRENT_FUNCTION_LIST_DIR
Добавлено в версии 3.17.
При выполнении кода внутри function() эта переменная содержит полный путь к каталогу файла списка, в котором определена текущая функция.
В CMake модули часто используют дополнительные файлы, например шаблоны, в которые перед копированием подставляются переменные CMake. В таких случаях функции необходимо знать, где находятся эти файлы, независимо от того, где вызывается функция. Без CMAKE_CURRENT_FUNCTION_LIST_DIR код для этого обычно выглядел бы так:
set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
function(foo)
configure_file(
"${_THIS_MODULE_BASE_DIR}/some.template.in"
some.output
)
endfunction()
Использование CMAKE_CURRENT_FUNCTION_LIST_DIR внутри функции избавляет от необходимости в дополнительной переменной, которая в противном случае была бы видна за пределами области видимости функции. Приведённый выше пример можно записать в более краткой и надёжной форме:
function(foo)
configure_file(
"${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
some.output
)
endfunction()
См. также CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_FILE, CMAKE_CURRENT_FUNCTION_LIST_LINE и CMAKE_CURRENT_LIST_DIR.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.html