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
。