diff options
Diffstat (limited to 'Help/command/function.rst')
-rw-r--r-- | Help/command/function.rst | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Help/command/function.rst b/Help/command/function.rst new file mode 100644 index 0000000..b18e03c --- /dev/null +++ b/Help/command/function.rst @@ -0,0 +1,31 @@ +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. |