Spec-Zone.ru › CMake 3.31

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/v3.31/policy/CMP0180.html

Spec-Zone.ru

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