block
Добавлено в версии 3.25.
Выполняет группу команд в отдельной области видимости переменных и/или политик.
block([SCOPE_FOR [DIAGNOSTICS] [POLICIES] [VARIABLES]]
[PROPAGATE <var-name>...])
<commands>
endblock()
Все команды между block() и соответствующей endblock() записываются, но не выполняются. После выполнения endblock() записанный список команд выполняется в запрошенных областях видимости, после чего области видимости, созданные командой block(), удаляются.
-
SCOPE_FOR -
Указывает, какие области видимости необходимо создать.
-
DIAGNOSTICS -
Добавлено в версии 4.4.
Создает новую диагностическую область видимости. Это эквивалентно
cmake_diagnostic(PUSH)с автоматическим вызовомcmake_diagnostic(POP)при выходе из области видимости блока. -
POLICIES -
Создает новую область видимости политик. Это эквивалентно
cmake_policy(PUSH)с автоматическим вызовомcmake_policy(POP)при выходе из области видимости блока. -
VARIABLES -
Создает новую область видимости переменных.
Если
SCOPE_FORне указан, это эквивалентно:block(SCOPE_FOR VARIABLES POLICIES DIAGNOSTICS)
-
-
PROPAGATE -
Когда команда
block()создает область видимости переменных, этот параметр устанавливает или удаляет указанные переменные в родительской области видимости. Это эквивалентно командамset(PARENT_SCOPE)илиunset(PARENT_SCOPE).set(var1 "INIT1") set(var2 "INIT2") set(var3 "INIT3") block(PROPAGATE var1 var2) set(var1 "VALUE1") unset(var2) set(var3 "VALUE3") endblock() # Now var1 holds VALUE1, var2 is unset, and var3 holds the initial value INIT3
Этот параметр разрешен только при создании области видимости переменных. В остальных случаях будет выдана ошибка.
Если команда block() находится внутри команды foreach() или while(), внутри блока можно использовать команды break() и continue().
while(TRUE)
block()
...
# the break() command will terminate the while() command
break()
endblock()
endwhile()
См. также
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/block.html