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 политики deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0150.html