Spec-Zone.ru › CMake 3.28

CMP0124

Новое в версии 3.21.

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

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

%%CODE_BLOCK_1%%% поведение для этой политики заключается в установке переменной цикла в конце цикла, либо с её исходным значением, либо со значением пустой строки. %%CODE_BLOCK_2%%% поведение для этой политики заключается в восстановлении переменной цикла до состояния, в котором она была до начала цикла, то есть установленной или не установленной.

Например:

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()

В рамках %%CODE_BLOCK_4%%% поведения этот код выводит %%CODE_BLOCK_5%%% и %%CODE_BLOCK_6%%%. В рамках %%CODE_BLOCK_7%%% поведения этот код выводит только %%CODE_BLOCK_8%%.

Данная политика была введена в версии CMake 3.21. Используйте команду cmake_policy(), чтобы установить её явно в %%CODE_BLOCK_10%%% или %%CODE_BLOCK_11%%%. В отличие от многих политик, CMake версии 3.28.6 не предупреждает, когда политика не установлена, и просто использует %%CODE_BLOCK_12%%% поведение.

Примечание

%%CODE_BLOCK_13%%% поведение политики является deprecated by definition и может быть удалено в будущих версиях CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/policy/CMP0124.html

Spec-Zone.ru

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