CMP0126
Новое в версии 3.21.
Когда эта политика установлена в NEW, команда set(CACHE) не удаляет ни одной обычной переменной с тем же именем из текущей области видимости. Поведение OLD удаляет любую обычную переменную с таким же именем из текущей области видимости в следующих ситуациях:
- Ранее не существовала переменная-кеш с таким именем.
- Ранее существовала переменная-кеш с таким именем, но она не имела типа. Это может произойти, когда переменная была установлена в командной строке с помощью формата
cmake -DMYVAR=blahвместоcmake -DMYVAR:STRING=blah.
Обратите внимание, что поведение NEW имеет важное отличие от аналогичного поведения NEW политики CMP0077. Команда set(CACHE) всегда устанавливает переменную-кеш, если она ранее не существовала, независимо от установки политики CMP0126. Команда option() не установит переменную-кеш, если уже существует переменная без кэширования с тем же именем и CMP0077 установлено в NEW.
Политика CMP0126 была введена в CMake версии 3.21. Используйте команду cmake_policy() для явного её установки в значение OLD или NEW внутри проекта. Используйте переменную CMAKE_POLICY_DEFAULT_CMP0126 для установки политики для проекта стороннего разработчика в подкаталоге без её модификации. В отличие от многих политик, CMake версии 3.22.6 не выводит предупреждение, если политика не установлена, и просто использует поведение OLD. См. документацию переменной CMAKE_POLICY_WARNING_CMP0126 для управления предупреждением.
Примечание
Поведение OLD политики является deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/policy/CMP0126.html