Spec-Zone.ru › CMake

CMP0102

Добавлен в версии 3.17.

Команда mark_as_advanced() больше не создаёт запись кэша, если она не существует.

В CMake 3.16 и ниже, если переменная вообще не была определена или была определена только локально, команда mark_as_advanced() создавала новую запись кэша типа UNINITIALIZED и без значения. Когда затем выполнялась команда find_path() (или другая подобная find_ команда), она находила эту неопределённую запись кэша и устанавливала ей значение пустой строки. Этот процесс в итоге удалял локальную переменную (из-за того, как работает кэш), эффективно очищая любые сохранённые find_ результаты, доступные только в локальной области видимости.

Поведение OLD для этой политики заключается в создании пустого определения кэша. Поведение NEW этой политики заключается в игнорировании переменных, которые ещё не существуют в кэше.

Эта политика была введена в версии CMake 3.17. Её можно установить с помощью cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake по умолчанию не выводит предупреждение и использует поведение 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/latest/policy/CMP0102.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API