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 для политики устарело по определению и может быть удалено в будущей версии CMake.

© 2000–2026 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