mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 21:30:01 -05:00
Help: Fix cmake_parse_arguments behavior for not found arguments
Value keywords are actually UNDEFINED rather than set to the empty string when they are not found in the argument list.
This commit is contained in:
@@ -43,15 +43,18 @@ macro which can be followed by more than one value, like e.g. the
|
|||||||
``<multi_value_keywords>``. A warning will be emitted if uniqueness is
|
``<multi_value_keywords>``. A warning will be emitted if uniqueness is
|
||||||
violated.
|
violated.
|
||||||
|
|
||||||
When done, ``cmake_parse_arguments`` will have defined for each of the
|
When done, ``cmake_parse_arguments`` will consider for each of the
|
||||||
keywords listed in ``<options>``, ``<one_value_keywords>`` and
|
keywords listed in ``<options>``, ``<one_value_keywords>`` and
|
||||||
``<multi_value_keywords>`` a variable composed of the given ``<prefix>``
|
``<multi_value_keywords>`` a variable composed of the given ``<prefix>``
|
||||||
followed by ``"_"`` and the name of the respective keyword. These
|
followed by ``"_"`` and the name of the respective keyword. These
|
||||||
variables will then hold the respective value from the argument list.
|
variables will then hold the respective value from the argument list
|
||||||
For the ``<options>`` keywords this will be ``TRUE`` or ``FALSE``.
|
or be undefined if the associated option could not be found.
|
||||||
|
For the ``<options>`` keywords, these will always be defined,
|
||||||
|
to ``TRUE`` or ``FALSE``, whether the option is in the argument list or not.
|
||||||
|
|
||||||
All remaining arguments are collected in a variable
|
All remaining arguments are collected in a variable
|
||||||
``<prefix>_UNPARSED_ARGUMENTS``, this can be checked afterwards to see
|
``<prefix>_UNPARSED_ARGUMENTS`` that will be undefined if all argument
|
||||||
|
where recognized. This can be checked afterwards to see
|
||||||
whether your macro was called with unrecognized parameters.
|
whether your macro was called with unrecognized parameters.
|
||||||
|
|
||||||
As an example here a ``my_install()`` macro, which takes similar arguments
|
As an example here a ``my_install()`` macro, which takes similar arguments
|
||||||
@@ -74,16 +77,16 @@ Assume ``my_install()`` has been called like this:
|
|||||||
|
|
||||||
my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
|
my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
|
||||||
|
|
||||||
After the ``cmake_parse_arguments`` call the macro will have set the
|
After the ``cmake_parse_arguments`` call the macro will have set or undefined
|
||||||
following variables::
|
the following variables::
|
||||||
|
|
||||||
MY_INSTALL_OPTIONAL = TRUE
|
MY_INSTALL_OPTIONAL = TRUE
|
||||||
MY_INSTALL_FAST = FALSE (was not used in call to my_install)
|
MY_INSTALL_FAST = FALSE # was not used in call to my_install
|
||||||
MY_INSTALL_DESTINATION = "bin"
|
MY_INSTALL_DESTINATION = "bin"
|
||||||
MY_INSTALL_RENAME = "" (was not used)
|
MY_INSTALL_RENAME <UNDEFINED> # was not used
|
||||||
MY_INSTALL_TARGETS = "foo;bar"
|
MY_INSTALL_TARGETS = "foo;bar"
|
||||||
MY_INSTALL_CONFIGURATIONS = "" (was not used)
|
MY_INSTALL_CONFIGURATIONS <UNDEFINED> # was not used
|
||||||
MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (nothing expected after "OPTIONAL")
|
MY_INSTALL_UNPARSED_ARGUMENTS = "blub" # nothing expected after "OPTIONAL"
|
||||||
|
|
||||||
You can then continue and process these variables.
|
You can then continue and process these variables.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user