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.27.9 не выдает предупреждение, если политика не установлена, а просто использует поведение OLD. См. документацию переменной CMAKE_POLICY_WARNING_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.27/policy/CMP0126.html