| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- block
- -----
- .. versionadded:: 3.25
- Evaluate a group of commands with a dedicated variable and/or policy scope.
- .. code-block:: cmake
- block([SCOPE_FOR [POLICIES] [VARIABLES] ] [PROPAGATE <var-name>...])
- <commands>
- endblock()
- All commands between ``block()`` and the matching :command:`endblock` are
- recorded without being invoked. Once the :command:`endblock` is evaluated, the
- recorded list of commands is invoked inside the requested scopes, then the
- scopes created by the ``block()`` command are removed.
- ``SCOPE_FOR``
- Specify which scopes must be created.
- ``POLICIES``
- Create a new policy scope. This is equivalent to
- :command:`cmake_policy(PUSH)`.
- ``VARIABLES``
- Create a new variable scope.
- If ``SCOPE_FOR`` is not specified, this is equivalent to:
- .. code-block:: cmake
- block(SCOPE_FOR VARIABLES POLICIES)
- ``PROPAGATE``
- When a variable scope is created by the :command:`block` command, this
- option sets or unsets the specified variables in the parent scope. This is
- equivalent to :command:`set(PARENT_SCOPE)` or :command:`unset(PARENT_SCOPE)`
- commands.
- .. code-block:: cmake
- set(var1 "INIT1")
- set(var2 "INIT2")
- block(PROPAGATE var1 var2)
- set(var1 "VALUE1")
- unset(var2)
- endblock()
- # Now var1 holds VALUE1, and var2 is unset
- This option is only allowed when a variable scope is created. An error will
- be raised in the other cases.
- When the ``block()`` is inside a :command:`foreach` or :command:`while`
- command, the :command:`break` and :command:`continue` commands can be used
- inside the block.
- .. code-block:: cmake
- while(TRUE)
- block()
- ...
- # the break() command will terminate the while() command
- break()
- endblock()
- endwhile()
- See Also
- ^^^^^^^^
- * :command:`endblock`
- * :command:`return`
- * :command:`cmake_policy`
|