components/cmake/files/man7/cmake-language.7
author April Chin <april.chin@oracle.com>
Wed, 11 Nov 2015 12:06:59 -0800
changeset 5081 198d4a3e4b73
permissions -rw-r--r--
21834219 update cmake to 3.3.2 22121918 enable system-test target for cmake
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5081
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     1
.\" Man page generated from reStructuredText.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     2
.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     3
.TH "CMAKE-LANGUAGE" "7" "October 14, 2015" "3.3.2" "CMake"
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     4
.SH NAME
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     5
cmake-language \- CMake Language Reference
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     6
.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     7
.nr rst2man-indent-level 0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     8
.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
     9
.de1 rstReportMargin
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    10
\\$1 \\n[an-margin]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    11
level \\n[rst2man-indent-level]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    12
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    13
-
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    14
\\n[rst2man-indent0]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    15
\\n[rst2man-indent1]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    16
\\n[rst2man-indent2]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    17
..
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    18
.de1 INDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    19
.\" .rstReportMargin pre:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    20
. RS \\$1
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    21
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    22
. nr rst2man-indent-level +1
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    23
.\" .rstReportMargin post:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    24
..
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    25
.de UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    26
. RE
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    27
.\" indent \\n[an-margin]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    28
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    29
.nr rst2man-indent-level -1
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    30
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    31
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    32
..
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    33
.SH ORGANIZATION
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    34
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    35
CMake input files are written in the "CMake Language" in source files
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    36
named \fBCMakeLists.txt\fP or ending in a \fB\&.cmake\fP file name extension.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    37
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    38
CMake Language source files in a project are organized into:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    39
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    40
.IP \(bu 2
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    41
\fI\%Directories\fP (\fBCMakeLists.txt\fP),
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    42
.IP \(bu 2
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    43
\fI\%Scripts\fP (\fB<script>.cmake\fP), and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    44
.IP \(bu 2
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    45
\fI\%Modules\fP (\fB<module>.cmake\fP).
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    46
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    47
.SS Directories
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    48
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    49
When CMake processes a project source tree, the entry point is
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    50
a source file called \fBCMakeLists.txt\fP in the top\-level source
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    51
directory.  This file may contain the entire build specification
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    52
or use the \fBadd_subdirectory()\fP command to add subdirectories
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    53
to the build.  Each subdirectory added by the command must also
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    54
contain a \fBCMakeLists.txt\fP file as the entry point to that
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    55
directory.  For each source directory whose \fBCMakeLists.txt\fP file
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    56
is processed CMake generates a corresponding directory in the build
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    57
tree to act as the default working and output directory.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    58
.SS Scripts
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    59
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    60
An individual \fB<script>.cmake\fP source file may be processed
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    61
in \fIscript mode\fP by using the \fBcmake(1)\fP command\-line tool
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    62
with the \fB\-P\fP option.  Script mode simply runs the commands in
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    63
the given CMake Language source file and does not generate a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    64
build system.  It does not allow CMake commands that define build
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    65
targets or actions.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    66
.SS Modules
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    67
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    68
CMake Language code in either \fI\%Directories\fP or \fI\%Scripts\fP may
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    69
use the \fBinclude()\fP command to load a \fB<module>.cmake\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    70
source file in the scope of the including context.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    71
See the \fBcmake\-modules(7)\fP manual page for documentation
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    72
of modules included with the CMake distribution.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    73
Project source trees may also provide their own modules and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    74
specify their location(s) in the \fBCMAKE_MODULE_PATH\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    75
variable.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    76
.SH SYNTAX
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    77
.SS Encoding
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    78
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    79
A CMake Language source file may be written in 7\-bit ASCII text for
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    80
maximum portability across all supported platforms.  Newlines may be
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    81
encoded as either \fB\en\fP or \fB\er\en\fP but will be converted to \fB\en\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    82
as input files are read.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    83
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    84
Note that the implementation is 8\-bit clean so source files may
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    85
be encoded as UTF\-8 on platforms with system APIs supporting this
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    86
encoding.  In addition, CMake 3.2 and above support source files
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    87
encoded in UTF\-8 on Windows (using UTF\-16 to call system APIs).
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    88
Furthermore, CMake 3.0 and above allow a leading UTF\-8
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    89
\fI\%Byte\-Order Mark\fP in source files.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    90
.SS Source Files
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    91
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    92
A CMake Language source file consists of zero or more
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    93
\fI\%Command Invocations\fP separated by newlines and optionally
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    94
spaces and \fI\%Comments\fP:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    95
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    96
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    97
\fBfile        \fP ::=  \fI\%file_element\fP*
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    98
\fBfile_element\fP ::=  \fI\%command_invocation\fP \fI\%line_ending\fP |
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
    99
                  (\fI\%bracket_comment\fP|\fI\%space\fP)* \fI\%line_ending\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   100
\fBline_ending \fP ::=  \fI\%line_comment\fP? \fI\%newline\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   101
\fBspace       \fP ::=  <match \(aq[ \et]+\(aq>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   102
\fBnewline     \fP ::=  <match \(aq\en\(aq>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   103
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   104
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   105
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   106
Note that any source file line not inside \fI\%Command Arguments\fP or
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   107
a \fI\%Bracket Comment\fP can end in a \fI\%Line Comment\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   108
.SS Command Invocations
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   109
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   110
A \fIcommand invocation\fP is a name followed by paren\-enclosed arguments
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   111
separated by whitespace:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   112
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   113
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   114
\fBcommand_invocation \fP ::=  \fI\%space\fP* \fI\%identifier\fP \fI\%space\fP* \(aq(\(aq \fI\%arguments\fP \(aq)\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   115
\fBidentifier         \fP ::=  <match \(aq[A\-Za\-z_][A\-Za\-z0\-9_]*\(aq>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   116
\fBarguments          \fP ::=  \fI\%argument\fP? \fI\%separated_arguments\fP*
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   117
\fBseparated_arguments\fP ::=  \fI\%separation\fP+ \fI\%argument\fP? |
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   118
                         \fI\%separation\fP* \(aq(\(aq \fI\%arguments\fP \(aq)\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   119
\fBseparation         \fP ::=  \fI\%space\fP | \fI\%line_ending\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   120
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   121
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   122
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   123
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   124
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   125
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   126
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   127
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   128
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   129
add_executable(hello world.c)
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   130
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   131
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   132
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   133
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   134
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   135
Command names are case\-insensitive.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   136
Nested unquoted parentheses in the arguments must balance.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   137
Each \fB(\fP or \fB)\fP is given to the command invocation as
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   138
a literal \fI\%Unquoted Argument\fP\&.  This may be used in calls
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   139
to the \fBif()\fP command to enclose conditions.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   140
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   141
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   142
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   143
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   144
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   145
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   146
if(FALSE AND (FALSE OR TRUE)) # evaluates to FALSE
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   147
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   148
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   149
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   150
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   151
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   152
\fBNOTE:\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   153
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   154
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   155
CMake versions prior to 3.0 require command name identifiers
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   156
to be at least 2 characters.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   157
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   158
CMake versions prior to 2.8.12 silently accept an \fI\%Unquoted Argument\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   159
or a \fI\%Quoted Argument\fP immediately following a \fI\%Quoted Argument\fP and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   160
not separated by any whitespace.  For compatibility, CMake 2.8.12 and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   161
higher accept such code but produce a warning.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   162
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   163
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   164
.SS Command Arguments
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   165
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   166
There are three types of arguments within \fI\%Command Invocations\fP:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   167
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   168
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   169
\fBargument\fP ::=  \fI\%bracket_argument\fP | \fI\%quoted_argument\fP | \fI\%unquoted_argument\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   170
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   171
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   172
.SS Bracket Argument
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   173
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   174
A \fIbracket argument\fP, inspired by \fI\%Lua\fP long bracket syntax,
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   175
encloses content between opening and closing "brackets" of the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   176
same length:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   177
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   178
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   179
\fBbracket_argument\fP ::=  \fI\%bracket_open\fP \fI\%bracket_content\fP \fI\%bracket_close\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   180
\fBbracket_open    \fP ::=  \(aq[\(aq \(aq=\(aq{len} \(aq[\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   181
\fBbracket_content \fP ::=  <any text not containing a \fI\%bracket_close\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   182
                       of the same {len} as the \fI\%bracket_open\fP>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   183
\fBbracket_close   \fP ::=  \(aq]\(aq \(aq=\(aq{len} \(aq]\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   184
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   185
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   186
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   187
An opening bracket of length \fIlen >= 0\fP is written \fB[\fP followed
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   188
by \fIlen\fP \fB=\fP followed by \fB[\fP and the corresponding closing
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   189
bracket is written \fB]\fP followed by \fIlen\fP \fB=\fP followed by \fB]\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   190
Brackets do not nest.  A unique length may always be chosen
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   191
for the opening and closing brackets to contain closing brackets
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   192
of other lengths.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   193
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   194
Bracket argument content consists of all text between the opening
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   195
and closing brackets, except that one newline immediately following
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   196
the opening bracket, if any, is ignored.  No evaluation of the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   197
enclosed content, such as \fI\%Escape Sequences\fP or \fI\%Variable References\fP,
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   198
is performed.  A bracket argument is always given to the command
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   199
invocation as exactly one argument.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   200
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   201
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   202
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   203
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   204
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   205
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   206
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   207
message([=[
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   208
This is the first line in a bracket argument with bracket length 1.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   209
No \e\-escape sequences or ${variable} references are evaluated.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   210
This is always one argument even though it contains a ; character.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   211
The text does not end on a closing bracket of length 0 like ]].
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   212
It does end in a closing bracket of length 1.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   213
]=])
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   214
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   215
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   216
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   217
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   218
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   219
\fBNOTE:\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   220
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   221
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   222
CMake versions prior to 3.0 do not support bracket arguments.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   223
They interpret the opening bracket as the start of an
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   224
\fI\%Unquoted Argument\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   225
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   226
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   227
.SS Quoted Argument
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   228
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   229
A \fIquoted argument\fP encloses content between opening and closing
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   230
double\-quote characters:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   231
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   232
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   233
\fBquoted_argument    \fP ::=  \(aq"\(aq \fI\%quoted_element\fP* \(aq"\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   234
\fBquoted_element     \fP ::=  <any character except \(aq\e\(aq or \(aq"\(aq> |
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   235
                         \fI\%escape_sequence\fP |
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   236
                         \fI\%quoted_continuation\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   237
\fBquoted_continuation\fP ::=  \(aq\e\(aq \fI\%newline\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   238
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   239
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   240
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   241
Quoted argument content consists of all text between opening and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   242
closing quotes.  Both \fI\%Escape Sequences\fP and \fI\%Variable References\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   243
are evaluated.  A quoted argument is always given to the command
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   244
invocation as exactly one argument.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   245
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   246
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   247
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   248
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   249
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   250
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   251
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   252
message("This is a quoted argument containing multiple lines.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   253
This is always one argument even though it contains a ; character.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   254
Both \e\e\-escape sequences and ${variable} references are evaluated.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   255
The text does not end on an escaped double\-quote like \e".
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   256
It does end in an unescaped double quote.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   257
")
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   258
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   259
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   260
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   261
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   262
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   263
The final \fB\e\fP on any line ending in an odd number of backslashes
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   264
is treated as a line continuation and ignored along with the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   265
immediately following newline character.  For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   266
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   267
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   268
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   269
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   270
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   271
message("\e
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   272
This is the first line of a quoted argument. \e
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   273
In fact it is the only line but since it is long \e
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   274
the source code uses line continuation.\e
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   275
")
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   276
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   277
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   278
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   279
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   280
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   281
\fBNOTE:\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   282
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   283
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   284
CMake versions prior to 3.0 do not support continuation with \fB\e\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   285
They report errors in quoted arguments containing lines ending in
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   286
an odd number of \fB\e\fP characters.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   287
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   288
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   289
.SS Unquoted Argument
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   290
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   291
An \fIunquoted argument\fP is not enclosed by any quoting syntax.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   292
It may not contain any whitespace, \fB(\fP, \fB)\fP, \fB#\fP, \fB"\fP, or \fB\e\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   293
except when escaped by a backslash:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   294
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   295
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   296
\fBunquoted_argument\fP ::=  \fI\%unquoted_element\fP+ | \fI\%unquoted_legacy\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   297
\fBunquoted_element \fP ::=  <any character except whitespace or one of \(aq()#"\e\(aq> |
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   298
                       \fI\%escape_sequence\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   299
\fBunquoted_legacy  \fP ::=  <see note in text>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   300
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   301
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   302
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   303
Unquoted argument content consists of all text in a contiguous block
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   304
of allowed or escaped characters.  Both \fI\%Escape Sequences\fP and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   305
\fI\%Variable References\fP are evaluated.  The resulting value is divided
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   306
in the same way \fI\%Lists\fP divide into elements.  Each non\-empty element
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   307
is given to the command invocation as an argument.  Therefore an
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   308
unquoted argument may be given to a command invocation as zero or
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   309
more arguments.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   310
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   311
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   312
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   313
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   314
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   315
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   316
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   317
foreach(arg
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   318
    NoSpace
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   319
    Escaped\e Space
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   320
    This;Divides;Into;Five;Arguments
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   321
    Escaped\e;Semicolon
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   322
    )
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   323
  message("${arg}")
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   324
endforeach()
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   325
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   326
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   327
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   328
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   329
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   330
\fBNOTE:\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   331
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   332
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   333
To support legacy CMake code, unquoted arguments may also contain
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   334
double\-quoted strings (\fB"..."\fP, possibly enclosing horizontal
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   335
whitespace), and make\-style variable references (\fB$(MAKEVAR)\fP).
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   336
Unescaped double\-quotes must balance, may not appear at the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   337
beginning of an unquoted argument, and are treated as part of the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   338
content.  For example, the unquoted arguments \fB\-Da="b c"\fP,
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   339
\fB\-Da=$(v)\fP, and \fBa" "b"c"d\fP are each interpreted literally.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   340
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   341
The above "unquoted_legacy" production represents such arguments.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   342
We do not recommend using legacy unquoted arguments in new code.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   343
Instead use a \fI\%Quoted Argument\fP or a \fI\%Bracket Argument\fP to
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   344
represent the content.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   345
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   346
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   347
.SS Escape Sequences
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   348
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   349
An \fIescape sequence\fP is a \fB\e\fP followed by one character:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   350
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   351
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   352
\fBescape_sequence \fP ::=  \fI\%escape_identity\fP | \fI\%escape_encoded\fP | \fI\%escape_semicolon\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   353
\fBescape_identity \fP ::=  \(aq\e\(aq <match \(aq[^A\-Za\-z0\-9;]\(aq>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   354
\fBescape_encoded  \fP ::=  \(aq\et\(aq | \(aq\er\(aq | \(aq\en\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   355
\fBescape_semicolon\fP ::=  \(aq\e;\(aq
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   356
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   357
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   358
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   359
A \fB\e\fP followed by a non\-alphanumeric character simply encodes the literal
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   360
character without interpreting it as syntax.  A \fB\et\fP, \fB\er\fP, or \fB\en\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   361
encodes a tab, carriage return, or newline character, respectively. A \fB\e;\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   362
outside of any \fI\%Variable References\fP  encodes itself but may be used in an
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   363
\fI\%Unquoted Argument\fP to encode the \fB;\fP without dividing the argument
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   364
value on it.  A \fB\e;\fP inside \fI\%Variable References\fP encodes the literal
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   365
\fB;\fP character.  (See also policy \fBCMP0053\fP documentation for
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   366
historical considerations.)
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   367
.SS Variable References
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   368
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   369
A \fIvariable reference\fP has the form \fB${variable_name}\fP and is
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   370
evaluated inside a \fI\%Quoted Argument\fP or an \fI\%Unquoted Argument\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   371
A variable reference is replaced by the value of the variable,
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   372
or by the empty string if the variable is not set.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   373
Variable references can nest and are evaluated from the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   374
inside out, e.g. \fB${outer_${inner_variable}_variable}\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   375
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   376
Literal variable references may consist of alphanumeric characters,
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   377
the characters \fB/_.+\-\fP, and \fI\%Escape Sequences\fP\&.  Nested references
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   378
may be used to evaluate variables of any name.  (See also policy
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   379
\fBCMP0053\fP documentation for historical considerations.)
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   380
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   381
The \fI\%Variables\fP section documents the scope of variable names
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   382
and how their values are set.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   383
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   384
An \fIenvironment variable reference\fP has the form \fB$ENV{VAR}\fP and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   385
is evaluated in the same contexts as a normal variable reference.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   386
.SS Comments
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   387
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   388
A comment starts with a \fB#\fP character that is not inside a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   389
\fI\%Bracket Argument\fP, \fI\%Quoted Argument\fP, or escaped with \fB\e\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   390
as part of an \fI\%Unquoted Argument\fP\&.  There are two types of
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   391
comments: a \fI\%Bracket Comment\fP and a \fI\%Line Comment\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   392
.SS Bracket Comment
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   393
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   394
A \fB#\fP immediately followed by a \fI\%Bracket Argument\fP forms a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   395
\fIbracket comment\fP consisting of the entire bracket enclosure:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   396
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   397
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   398
\fBbracket_comment\fP ::=  \(aq#\(aq \fI\%bracket_argument\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   399
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   400
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   401
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   402
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   403
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   404
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   405
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   406
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   407
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   408
#[[This is a bracket comment.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   409
It runs until the close bracket.]]
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   410
message("First Argument\en" #[[Bracket Comment]] "Second Argument")
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   411
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   412
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   413
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   414
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   415
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   416
\fBNOTE:\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   417
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   418
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   419
CMake versions prior to 3.0 do not support bracket comments.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   420
They interpret the opening \fB#\fP as the start of a \fI\%Line Comment\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   421
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   422
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   423
.SS Line Comment
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   424
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   425
A \fB#\fP not immediately followed by a \fI\%Bracket Argument\fP forms a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   426
\fIline comment\fP that runs until the end of the line:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   427
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   428
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   429
\fBline_comment\fP ::=  \(aq#\(aq <any text not starting in a \fI\%bracket_argument\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   430
                       and not containing a \fI\%newline\fP>
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   431
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   432
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   433
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   434
For example:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   435
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   436
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   437
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   438
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   439
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   440
# This is a line comment.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   441
message("First Argument\en" # This is a line comment :)
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   442
        "Second Argument") # This is a line comment.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   443
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   444
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   445
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   446
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   447
.SH CONTROL STRUCTURES
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   448
.SS Conditional Blocks
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   449
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   450
The \fBif()\fP/\fBelseif()\fP/\fBelse()\fP/\fBendif()\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   451
commands delimit code blocks to be executed conditionally.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   452
.SS Loops
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   453
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   454
The \fBforeach()\fP/\fBendforeach()\fP and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   455
\fBwhile()\fP/\fBendwhile()\fP commands delimit code
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   456
blocks to be executed in a loop.  Inside such blocks the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   457
\fBbreak()\fP command may be used to terminate the loop
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   458
early whereas the \fBcontinue()\fP command may be used
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   459
to start with the next iteration immediately.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   460
.SS Command Definitions
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   461
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   462
The \fBmacro()\fP/\fBendmacro()\fP, and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   463
\fBfunction()\fP/\fBendfunction()\fP commands delimit
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   464
code blocks to be recorded for later invocation as commands.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   465
.SH VARIABLES
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   466
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   467
Variables are the basic unit of storage in the CMake Language.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   468
Their values are always of string type, though some commands may
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   469
interpret the strings as values of other types.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   470
The \fBset()\fP and \fBunset()\fP commands explicitly
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   471
set or unset a variable, but other commands have semantics
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   472
that modify variables as well.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   473
Variable names are case\-sensitive and may consist of almost
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   474
any text, but we recommend sticking to names consisting only
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   475
of alphanumeric characters plus \fB_\fP and \fB\-\fP\&.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   476
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   477
Variables have dynamic scope.  Each variable "set" or "unset"
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   478
creates a binding in the current scope:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   479
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   480
.TP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   481
.B Function Scope
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   482
\fI\%Command Definitions\fP created by the \fBfunction()\fP command
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   483
create commands that, when invoked, process the recorded commands
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   484
in a new variable binding scope.  A variable "set" or "unset"
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   485
binds in this scope and is visible for the current function and
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   486
any nested calls, but not after the function returns.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   487
.TP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   488
.B Directory Scope
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   489
Each of the \fI\%Directories\fP in a source tree has its own variable
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   490
bindings.  Before processing the \fBCMakeLists.txt\fP file for a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   491
directory, CMake copies all variable bindings currently defined
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   492
in the parent directory, if any, to initialize the new directory
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   493
scope.  CMake \fI\%Scripts\fP, when processed with \fBcmake \-P\fP, bind
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   494
variables in one "directory" scope.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   495
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   496
A variable "set" or "unset" not inside a function call binds
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   497
to the current directory scope.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   498
.TP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   499
.B Persistent Cache
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   500
CMake stores a separate set of "cache" variables, or "cache entries",
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   501
whose values persist across multiple runs within a project build
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   502
tree.  Cache entries have an isolated binding scope modified only
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   503
by explicit request, such as by the \fBCACHE\fP option of the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   504
\fBset()\fP and \fBunset()\fP commands.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   505
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   506
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   507
When evaluating \fI\%Variable References\fP, CMake first searches the
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   508
function call stack, if any, for a binding and then falls back
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   509
to the binding in the current directory scope, if any.  If a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   510
"set" binding is found, its value is used.  If an "unset" binding
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   511
is found, or no binding is found, CMake then searches for a
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   512
cache entry.  If a cache entry is found, its value is used.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   513
Otherwise, the variable reference evaluates to an empty string.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   514
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   515
The \fBcmake\-variables(7)\fP manual documents many variables
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   516
that are provided by CMake or have meaning to CMake when set
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   517
by project code.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   518
.SH LISTS
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   519
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   520
Although all values in CMake are stored as strings, a string
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   521
may be treated as a list in certain contexts, such as during
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   522
evaluation of an \fI\%Unquoted Argument\fP\&.  In such contexts, a string
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   523
is divided into list elements by splitting on \fB;\fP characters not
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   524
following an unequal number of \fB[\fP and \fB]\fP characters and not
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   525
immediately preceded by a \fB\e\fP\&.  The sequence \fB\e;\fP does not
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   526
divide a value but is replaced by \fB;\fP in the resulting element.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   527
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   528
A list of elements is represented as a string by concatenating
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   529
the elements separated by \fB;\fP\&.  For example, the \fBset()\fP
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   530
command stores multiple values into the destination variable
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   531
as a list:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   532
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   533
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   534
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   535
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   536
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   537
set(srcs a.c b.c c.c) # sets "srcs" to "a.c;b.c;c.c"
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   538
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   539
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   540
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   541
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   542
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   543
Lists are meant for simple use cases such as a list of source
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   544
files and should not be used for complex data processing tasks.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   545
Most commands that construct lists do not escape \fB;\fP characters
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   546
in list elements, thus flattening nested lists:
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   547
.INDENT 0.0
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   548
.INDENT 3.5
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   549
.sp
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   550
.nf
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   551
.ft C
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   552
set(x a "b;c") # sets "x" to "a;b;c", not "a;b\e;c"
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   553
.ft P
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   554
.fi
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   555
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   556
.UNINDENT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   557
.SH COPYRIGHT
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   558
2000-2015 Kitware, Inc.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   559
.\" Generated by docutils manpage writer.
198d4a3e4b73 21834219 update cmake to 3.3.2
April Chin <april.chin@oracle.com>
parents:
diff changeset
   560
.