summaryrefslogtreecommitdiffstats
path: root/Help/command/function.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Help/command/function.rst')
-rw-r--r--Help/command/function.rst31
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.