Spec-Zone.ru › CMake

CMP0124

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

foreach() переменные цикла доступны только в области цикла.

CMake 3.20 и ниже всегда оставляют переменную цикла установленной в конце цикла, либо со значением, которое она имела до цикла, если таковое есть, либо со значением пустой строки. CMake 3.21 и выше предпочитают оставлять переменную цикла в состоянии, в котором она была до начала цикла, то есть установленной или не установленной. Данная политика обеспечивает совместимость для проектов, которые ожидают, что переменная цикла всегда будет установлена.

OLD поведение для данной политики заключается в установке переменной цикла в конце цикла, либо со значением, которое у неё было изначально, либо с пустым значением. NEW поведение для данной политики заключается в восстановлении переменной цикла до состояния, в котором она была до начала цикла, то есть установленной или не установленной.

Например:

set(items a b c)

set(var1 "value")
unset(var2)

foreach(var1 IN LISTS items)
endforeach()

foreach(var2 IN LISTS items)
endforeach()

if(DEFINED var1)
  message("var1: ${var1}")
endif()
if(DEFINED var2)
  message("var2: ${var2}")
endif()

При OLD поведении, этот код выводит var1: value и var2:. При NEW поведении, этот код выводит только var1: value.

Данная политика была введена в версии CMake 3.21. Она может быть установлена с помощью cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake не выдает предупреждений и использует OLD поведение.

Примечание

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/CMP0124.html

Spec-Zone.ru

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