CMP0150¶
於 3.27 版本新增。
ExternalProject_Add()
和 FetchContent_Declare()
命令會將相對的 GIT_REPOSITORY
路徑視為相對於父專案的遠端位置。
這些命令的早期版本總是將 GIT_REPOSITORY
中的相對路徑視為本地路徑,但它被視為相對的路徑的基準目錄既沒有文件記錄,也不直觀。 此政策的 OLD
行為是將用於 GIT_REPOSITORY
的相對路徑解釋為相對於以下位置的本地路徑
ExternalProject_Add()
的SOURCE_DIR
的父目錄。FetchContent_Declare()
的FETCHCONTENT_BASE_DIR
。
NEW
行為是從父專案確定遠端位置,並將路徑解釋為相對於該遠端位置。當呼叫 ExternalProject_Add()
或 FetchContent_Declare()
時,CMAKE_CURRENT_SOURCE_DIR
的值決定了父專案。遠端位置會根據以下方式選擇(使用第一個匹配項):
如果父專案在具有已定義的上游遠端位置的分支上簽出,則使用該遠端位置。
如果只定義了一個遠端位置,則使用該遠端位置。
如果定義了多個遠端位置,且其中一個命名為
origin
,則使用origin
的遠端位置,但也會發出警告。
如果無法從以上方式確定合適的遠端位置,則會引發嚴重錯誤。
此政策是在 CMake 3.27 版本中引入的。 可以透過 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 會在遇到相對路徑時發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為根據定義為 已棄用
,並且可能會在未來版本的 CMake 中移除。