Spec-Zone.ru › CMake

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() определяет родительский проект. Удалённый репозиторий выбирается по следующим правилам (используется первое подходящее):

  • Если родительский проект извлечён из ветки, для которой задан удалённый репозиторий upstream, используется этот удалённый репозиторий.
  • Если задан только один удалённый репозиторий, используется он.
  • Если задано несколько удалённых репозиториев и один из них называется origin, используется удалённый репозиторий origin, но также выдаётся предупреждение.

Если по указанным выше правилам не удаётся определить подходящий удалённый репозиторий, будет выдана фатальная ошибка.

Эта политика появилась в CMake версии 3.27. Её можно задать с помощью cmake_policy() или cmake_minimum_required(). Если она не задана, CMake выдаёт предупреждение при обнаружении относительного пути и использует поведение OLD.

Примечание

Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0150.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API