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.27.9 не предупреждает, когда эта политика не задана, а просто использует поведение OLD. См. документацию переменной CMAKE_POLICY_WARNING_CMP0102 для управления предупреждением.
Примечание
Поведение 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/CMP0102.html