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
行為 deprecated by definition
,並且可能會在未來版本的 CMake 中移除。