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
。