Spec-Zone.ru › CMake 3.14

foreach

Оценить группу команд для каждого значения в списке.

foreach(<loop_var> <items>)
  <commands>
endforeach()

где <items> — это список элементов, разделенных точкой с запятой или пробелом. Все команды между foreach и соответствующей endforeach записываются без вызова. После того, как endforeach будет оценена, записанный список команд вызывается один раз для каждого элемента в <items>. В начале каждой итерации переменная loop_var будет установлена в значение текущего элемента.

Команды break() и continue() предоставляют способ выхода из обычного потока управления.

В соответствии со старой версией, команда endforeach() допускает необязательный <loop_var> аргумент. Если он используется, он должен быть точным повтором аргумента открывающей foreach команды.

foreach(<loop_var> RANGE <stop>)

В этом варианте foreach итерирует по числам 0, 1, … до (включая) неотрицательного целого числа <stop>.

foreach(<loop_var> RANGE <start> <stop> [<step>])

В этом варианте foreach итерирует по числам от <start> до не более <stop> с шагом <step>. Если <step> не указано, размер шага равен 1. Все три аргумента <start> <stop> <step> должны быть неотрицательными целыми числами, а <stop> не должно быть меньше <start>; в противном случае вы попадаете в зону неописанного поведения, которое может измениться в будущих версиях.

foreach(loop_var IN [LISTS [<lists>]] [ITEMS [<items>]])

В этом варианте <lists> — это список переменных со значениями списков, разделенных пробелами или точкой с запятой. Команда foreach итерирует по каждому элементу в каждом заданном списке. Команды <items>, следующие за ключевым словом ITEMS, обрабатываются так же, как и в первом варианте команды foreach . Формы LISTS A и ITEMS ${A} эквивалентны.

Следующий пример демонстрирует обработку опции LISTS:

set(A 0;1)
set(B 2 3)
set(C "4 5")
set(D 6;7 8)
set(E "")
foreach(X IN LISTS A B C D E)
    message(STATUS "X=${X}")
endforeach()

приводит к

-- X=0
-- X=1
-- X=2
-- X=3
-- X=4 5
-- X=6
-- X=7
-- X=8

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.14/command/foreach.html

Spec-Zone.ru

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