32 lines
1.2 KiB
ReStructuredText
32 lines
1.2 KiB
ReStructuredText
|
function
|
||
|
--------
|
||
|
|
||
|
Start recording a function for later invocation as a command.
|
||
|
|
||
|
::
|
||
|
|
||
|
function(<name> [arg1 [arg2 [arg3 ...]]])
|
||
|
COMMAND1(ARGS ...)
|
||
|
COMMAND2(ARGS ...)
|
||
|
...
|
||
|
endfunction(<name>)
|
||
|
|
||
|
Define a function named <name> that takes arguments named arg1 arg2
|
||
|
arg3 (...). Commands listed after function, but before the matching
|
||
|
endfunction, are not invoked until the function is invoked. When it
|
||
|
is invoked, the commands recorded in the function 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 variable ARGC 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. Additionally ARGV holds the list of all arguments
|
||
|
given to the function and ARGN holds the list of arguments past the
|
||
|
last expected argument.
|
||
|
|
||
|
A function opens a new scope: see set(var PARENT_SCOPE) for details.
|
||
|
|
||
|
See the cmake_policy() command documentation for the behavior of
|
||
|
policies inside functions.
|