Spec-Zone.ru › CMake

CMP0180

Добавлена в версии 3.31.

project() всегда устанавливает <PROJECT-NAME>_* в качестве обычных переменных.

В CMake 3.29 и ниже команда project() устанавливала <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR и <PROJECT-NAME>_IS_TOP_LEVEL как записи кэша, но не как обычные переменные. CMake 3.30 начал устанавливать их как обычные переменные, но только в том случае, если они уже были установлены как обычные переменные. Это было необходимо для сохранения поддержки некоторых случаев использования FetchContent в рамках политики CMP0169 в новом поведении, а также для сохранения поведения вложенных каталогов, которые вызывают project() с тем же именем проекта. Подробнее см. в примечаниях к выпуску для 3.30.3, 3.30.4 и 3.30.5.

CMake 3.31 и более поздние версии предпочитают всегда устанавливать <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR, и <PROJECT-NAME>_IS_TOP_LEVEL, как записи кэша, и как обычные переменные, независимо от того, какие записи кэша или обычные переменные уже существуют. Эта политика обеспечивает совместимость для проектов, которые не были обновлены, чтобы ожидать этого поведения.

Поведение OLD для данной политики будет устанавливать обычные переменные для <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR, и <PROJECT-NAME>_IS_TOP_LEVEL, только если уже существует обычная переменная с таким же именем при вызове project(). Поведение NEW для этой политики всегда устанавливает обычные переменные для <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR, и <PROJECT-NAME>_IS_TOP_LEVEL при вызове project().

Эта политика была введена в CMake версии 3.31. Она может быть установлена с помощью 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/CMP0180.html

Spec-Zone.ru

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