Spec-Zone.ru › CMake 3.30

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

Spec-Zone.ru

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