Spec-Zone.ru › CMake 3.29

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

Spec-Zone.ru

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