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 политики deprecated by definition и может быть удалено в будущей версии CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/policy/CMP0126.html