CMP0102
Новое в версии 3.17.
Команда mark_as_advanced() больше не создаёт запись в кэше, если она уже не существует.
В CMake 3.16 и ниже, если переменная вообще не была определена или была определена только локально, команда mark_as_advanced() создавала новую запись в кэше с типом UNINITIALIZED и без значения. Когда впоследствии выполнялась команда find_path() (или другая похожая команда find_), она находила эту неопределённую запись в кэше и устанавливала для неё пустое значение. Этот процесс приводил к удалению локальной переменной (из-за того, как работает кэш), эффективно очищая любые сохранённые find_ результаты, доступные только в локальной области видимости.
Поведение OLD для данной политики заключается в создании пустого определения кэша. Поведение NEW данной политики — игнорировать переменные, которые ещё не существуют в кэше.
Данная политика была введена в CMake версии 3.17. Используйте команду cmake_policy(), чтобы явно установить её значение в OLD или NEW. В отличие от многих политик, CMake версии 3.20.0-rc3 не выводит предупреждение, когда данная политика не установлена, а просто использует поведение OLD.
Примечание
Поведение OLD политики — deprecated by definition и может быть удалено в будущей версии CMake.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/policy/CMP0102.html