Spec-Zone.ru › CMake

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API