Spec-Zone.ru › CMake

CMP0126

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

Если для этой политики установлено значение NEW, команда set(CACHE) не удаляет из текущей области видимости обычную переменную с тем же именем. Поведение OLD удаляет из текущей области видимости обычную переменную с тем же именем в следующих случаях:

  • Ранее переменной кэша с таким именем не существовало.
  • Ранее переменная кэша с таким именем существовала, но у неё не было типа. Такое может произойти, если переменная была задана в командной строке с помощью формы cmake -DMYVAR=blah вместо cmake -DMYVAR:STRING=blah.
  • При задании переменной кэша использовались ключевые слова FORCE или INTERNAL.

Обратите внимание, что поведение NEW имеет важное отличие от аналогичного поведения NEW политики CMP0077. Команда set(CACHE) всегда задаёт переменную кэша, если она ранее не существовала, независимо от значения политики CMP0126. Команда option() не задаёт переменную кэша, если обычная переменная с таким же именем уже существует и для политики CMP0077 установлено значение NEW.

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

См. документацию переменной CMAKE_POLICY_WARNING_CMP0126, чтобы управлять предупреждением.

Переменную CMAKE_POLICY_DEFAULT_CMP0126 можно использовать, чтобы задать политику для стороннего проекта во вложенном каталоге, не изменяя его.

Примечание

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

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

Spec-Zone.ru

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