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.
Политика CMP0126 была добавлена в CMake версии 3.21. Используйте команду cmake_policy(), чтобы установить её в OLD или NEW явно в проекте. Используйте переменную CMAKE_POLICY_DEFAULT_CMP0126, чтобы установить политику для проекта сторонних разработчиков в подкаталоге без его модификации. В отличие от многих политик, CMake версии 3.26.0-rc3 не предупреждает, когда политика не установлена, и просто использует поведение OLD. Смотрите документацию переменной CMAKE_POLICY_WARNING_CMP0126 для управления предупреждением.
Примечание
Поведение OLD политики deprecated by definition и может быть удалено в будущей версии CMake.
© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/policy/CMP0126.html