CMP0150¶
3.27 版中新增。
ExternalProject_Add()
和 FetchContent_Declare()
命令将相对 GIT_REPOSITORY
路径视为相对于父项目遥控器。
这些命令的早期版本总是将 GIT_REPOSITORY
中的相对路径视为本地路径,但它被视为相对的基目录既未记录,也不直观。此策略的 OLD
行为是将用于 GIT_REPOSITORY
的相对路径解释为相对于以下内容的本地路径
SOURCE_DIR
的父目录,用于ExternalProject_Add()
。FETCHCONTENT_BASE_DIR
,用于FetchContent_Declare()
。
NEW
行为是确定父项目的遥控器并解释相对于该遥控器的路径。调用 CMAKE_CURRENT_SOURCE_DIR
时 ExternalProject_Add()
或 FetchContent_Declare()
确定父项目的值。根据以下内容选择遥控器(使用第一个匹配项)
如果父项目是在分支上检出的,并定义了上游遥控器,请使用该遥控器。
如果只定义了一个遥控器,请使用该遥控器。
如果定义了多个遥控器,其中一个名为
origin
,请使用origin
的遥控器,但也要发出警告。
如果无法从上述内容确定适当的遥控器,则会引发致命错误。
此策略在 CMake 3.27 版本中引入。它可通过 cmake_policy()
或 cmake_minimum_required()
进行设置。如果未设置,CMake 在遇到相对路径时发出警告并使用 OLD
行为。
注意
策略的 OLD
行为根据定义已 被 弃用 并且 有可能
在将来的 CMake 版本中移除。