CMP0150ΒΆ
New in version 3.27.
ExternalProject_Add()
and FetchContent_Declare()
commands
treat relative GIT_REPOSITORY
paths as being relative to the parent
project's remote.
Earlier versions of these commands always treated relative paths in
GIT_REPOSITORY
as local paths, but the base directory it was treated
as relative to was both undocumented and unintuitive. The OLD
behavior
for this policy is to interpret relative paths used for GIT_REPOSITORY
as local paths relative to the following:
The parent directory of
SOURCE_DIR
forExternalProject_Add()
.FETCHCONTENT_BASE_DIR
forFetchContent_Declare()
.
The NEW
behavior is to determine the remote from the parent project and
interpret the path relative to that remote. The value of
CMAKE_CURRENT_SOURCE_DIR
when ExternalProject_Add()
or
FetchContent_Declare()
is called determines the parent project.
The remote is selected according to the following (the first match is used):
If the parent project is checked out on a branch with an upstream remote defined, use that remote.
If only one remote is defined, use that remote.
If multiple remotes are defined and one of them is named
origin
, useorigin
's remote but also issue a warning.
If an appropriate remote cannot be determined from the above, a fatal error will be raised.
This policy was introduced in CMake version 3.27. CMake version 3.27.9
warns when a relative path is encountered and the policy is not set,
falling back to using OLD
behavior. Use the cmake_policy()
command to set it to OLD
or NEW
explicitly.
Note
The OLD
behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.