mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Help: Document that function invocation is case-insensitive
This commit is contained in:
committed by
Brad King
parent
357cdee3a1
commit
abb5945bd0
@@ -9,27 +9,9 @@ Start recording a function for later invocation as a command.
|
||||
<commands>
|
||||
endfunction()
|
||||
|
||||
Defines a function named ``<name>`` that takes arguments
|
||||
named ``<arg1>``, ...
|
||||
The ``<commands>`` in the function definition are recorded;
|
||||
they are not invoked until the function is invoked. When
|
||||
the function is invoked, the recorded ``<commands>`` are first
|
||||
modified by replacing formal parameters (``${arg1}``, ...)
|
||||
with the arguments passed, and then invoked as normal commands.
|
||||
|
||||
In addition to referencing the formal parameters you can reference the
|
||||
``ARGC`` variable which will be set to the number of arguments passed
|
||||
into the function as well as ``ARGV0``, ``ARGV1``, ``ARGV2``, ... which
|
||||
will have the actual values of the arguments passed in.
|
||||
This facilitates creating functions with optional arguments.
|
||||
|
||||
Furthermore, ``ARGV`` holds the list of all arguments given to the
|
||||
function and ``ARGN`` holds the list of arguments past the last expected
|
||||
argument.
|
||||
Referencing to ``ARGV#`` arguments beyond ``ARGC`` have undefined
|
||||
behavior. Checking that ``ARGC`` is greater than ``#`` is the only way
|
||||
to ensure that ``ARGV#`` was passed to the function as an extra
|
||||
argument.
|
||||
Defines a function named ``<name>`` that takes arguments named
|
||||
``<arg1>``, ... The ``<commands>`` in the function definition
|
||||
are recorded; they are not executed until the function is invoked.
|
||||
|
||||
Per legacy, the :command:`endfunction` command admits an optional
|
||||
``<name>`` argument. If used, it must be a verbatim repeat of the
|
||||
@@ -40,3 +22,46 @@ details.
|
||||
|
||||
See the :command:`cmake_policy()` command documentation for the behavior
|
||||
of policies inside functions.
|
||||
|
||||
Invocation
|
||||
^^^^^^^^^^
|
||||
|
||||
The function invocation is case-insensitive. A function defined as
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
function(foo)
|
||||
<commands>
|
||||
endfunction()
|
||||
|
||||
can be invoked through any of
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
foo()
|
||||
Foo()
|
||||
FOO()
|
||||
|
||||
and so on. However, it is strongly recommended to stay with the
|
||||
case chosen in the function definition. Typically functions use
|
||||
all-lowercase names.
|
||||
|
||||
Arguments
|
||||
^^^^^^^^^
|
||||
|
||||
When the function is invoked, the recorded ``<commands>`` are first
|
||||
modified by replacing formal parameters (``${arg1}``, ...) with the
|
||||
arguments passed, and then invoked as normal commands.
|
||||
|
||||
In addition to referencing the formal parameters you can reference the
|
||||
``ARGC`` variable which will be set to the number of arguments passed
|
||||
into the function as well as ``ARGV0``, ``ARGV1``, ``ARGV2``, ... which
|
||||
will have the actual values of the arguments passed in. This facilitates
|
||||
creating functions with optional arguments.
|
||||
|
||||
Furthermore, ``ARGV`` holds the list of all arguments given to the
|
||||
function and ``ARGN`` holds the list of arguments past the last expected
|
||||
argument. Referencing to ``ARGV#`` arguments beyond ``ARGC`` have
|
||||
undefined behavior. Checking that ``ARGC`` is greater than ``#`` is
|
||||
the only way to ensure that ``ARGV#`` was passed to the function as an
|
||||
extra argument.
|
||||
|
||||
Reference in New Issue
Block a user