Spec-Zone.ru › CMake

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

См. также

  • endblock()
  • return()
  • cmake_policy()

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/block.html

Spec-Zone.ru

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