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。