diff options
Diffstat (limited to 'share/cmake-3.6/Help/command/if.rst')
-rw-r--r-- | share/cmake-3.6/Help/command/if.rst | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/share/cmake-3.6/Help/command/if.rst b/share/cmake-3.6/Help/command/if.rst deleted file mode 100644 index 56e618c..0000000 --- a/share/cmake-3.6/Help/command/if.rst +++ /dev/null @@ -1,216 +0,0 @@ -if --- - -Conditionally execute a group of commands. - -.. code-block:: cmake - - if(expression) - # then section. - COMMAND1(ARGS ...) - COMMAND2(ARGS ...) - ... - elseif(expression2) - # elseif section. - COMMAND1(ARGS ...) - COMMAND2(ARGS ...) - ... - else(expression) - # else section. - COMMAND1(ARGS ...) - COMMAND2(ARGS ...) - ... - endif(expression) - -Evaluates the given expression. If the result is true, the commands -in the THEN section are invoked. Otherwise, the commands in the else -section are invoked. The elseif and else sections are optional. You -may have multiple elseif clauses. Note that the expression in the -else and endif clause is optional. Long expressions can be used and -there is a traditional order of precedence. Parenthetical expressions -are evaluated first followed by unary tests such as ``EXISTS``, -``COMMAND``, and ``DEFINED``. Then any binary tests such as -``EQUAL``, ``LESS``, ``GREATER``, ``STRLESS``, ``STRGREATER``, -``STREQUAL``, and ``MATCHES`` will be evaluated. Then boolean ``NOT`` -operators and finally boolean ``AND`` and then ``OR`` operators will -be evaluated. - -Possible expressions are: - -``if(<constant>)`` - True if the constant is ``1``, ``ON``, ``YES``, ``TRUE``, ``Y``, - or a non-zero number. False if the constant is ``0``, ``OFF``, - ``NO``, ``FALSE``, ``N``, ``IGNORE``, ``NOTFOUND``, the empty string, - or ends in the suffix ``-NOTFOUND``. Named boolean constants are - case-insensitive. If the argument is not one of these specific - constants, it is treated as a variable or string and the following - signature is used. - -``if(<variable|string>)`` - True if given a variable that is defined to a value that is not a false - constant. False otherwise. (Note macro arguments are not variables.) - -``if(NOT <expression>)`` - True if the expression is not true. - -``if(<expr1> AND <expr2>)`` - True if both expressions would be considered true individually. - -``if(<expr1> OR <expr2>)`` - True if either expression would be considered true individually. - -``if(COMMAND command-name)`` - True if the given name is a command, macro or function that can be - invoked. - -``if(POLICY policy-id)`` - True if the given name is an existing policy (of the form ``CMP<NNNN>``). - -``if(TARGET target-name)`` - True if the given name is an existing logical target name created - by a call to the :command:`add_executable`, :command:`add_library`, - or :command:`add_custom_target` command that has already been invoked - (in any directory). - -``if(TEST test-name)`` - True if the given name is an existing test name created by the - :command:`add_test` command. - -``if(EXISTS path-to-file-or-directory)`` - True if the named file or directory exists. Behavior is well-defined - only for full paths. - -``if(file1 IS_NEWER_THAN file2)`` - True if ``file1`` is newer than ``file2`` or if one of the two files doesn't - exist. Behavior is well-defined only for full paths. If the file - time stamps are exactly the same, an ``IS_NEWER_THAN`` comparison returns - true, so that any dependent build operations will occur in the event - of a tie. This includes the case of passing the same file name for - both file1 and file2. - -``if(IS_DIRECTORY path-to-directory)`` - True if the given name is a directory. Behavior is well-defined only - for full paths. - -``if(IS_SYMLINK file-name)`` - True if the given name is a symbolic link. Behavior is well-defined - only for full paths. - -``if(IS_ABSOLUTE path)`` - True if the given path is an absolute path. - -``if(<variable|string> MATCHES regex)`` - True if the given string or variable's value matches the given regular - expression. - -``if(<variable|string> LESS <variable|string>)`` - True if the given string or variable's value is a valid number and less - than that on the right. - -``if(<variable|string> GREATER <variable|string>)`` - True if the given string or variable's value is a valid number and greater - than that on the right. - -``if(<variable|string> EQUAL <variable|string>)`` - True if the given string or variable's value is a valid number and equal - to that on the right. - -``if(<variable|string> STRLESS <variable|string>)`` - True if the given string or variable's value is lexicographically less - than the string or variable on the right. - -``if(<variable|string> STRGREATER <variable|string>)`` - True if the given string or variable's value is lexicographically greater - than the string or variable on the right. - -``if(<variable|string> STREQUAL <variable|string>)`` - True if the given string or variable's value is lexicographically equal - to the string or variable on the right. - -``if(<variable|string> VERSION_LESS <variable|string>)`` - Component-wise integer version number comparison (version format is - ``major[.minor[.patch[.tweak]]]``). - -``if(<variable|string> VERSION_EQUAL <variable|string>)`` - Component-wise integer version number comparison (version format is - ``major[.minor[.patch[.tweak]]]``). - -``if(<variable|string> VERSION_GREATER <variable|string>)`` - Component-wise integer version number comparison (version format is - ``major[.minor[.patch[.tweak]]]``). - -``if(<variable|string> IN_LIST <variable>)`` - True if the given element is contained in the named list variable. - -``if(DEFINED <variable>)`` - True if the given variable is defined. It does not matter if the - variable is true or false just if it has been set. (Note macro - arguments are not variables.) - -``if((expression) AND (expression OR (expression)))`` - The expressions inside the parenthesis are evaluated first and then - the remaining expression is evaluated as in the previous examples. - Where there are nested parenthesis the innermost are evaluated as part - of evaluating the expression that contains them. - -The if command was written very early in CMake's history, predating -the ``${}`` variable evaluation syntax, and for convenience evaluates -variables named by its arguments as shown in the above signatures. -Note that normal variable evaluation with ``${}`` applies before the if -command even receives the arguments. Therefore code like:: - - set(var1 OFF) - set(var2 "var1") - if(${var2}) - -appears to the if command as:: - - if(var1) - -and is evaluated according to the ``if(<variable>)`` case documented -above. The result is ``OFF`` which is false. However, if we remove the -``${}`` from the example then the command sees:: - - if(var2) - -which is true because ``var2`` is defined to "var1" which is not a false -constant. - -Automatic evaluation applies in the other cases whenever the -above-documented signature accepts ``<variable|string>``: - -* The left hand argument to ``MATCHES`` is first checked to see if it is - a defined variable, if so the variable's value is used, otherwise the - original value is used. - -* If the left hand argument to ``MATCHES`` is missing it returns false - without error - -* Both left and right hand arguments to ``LESS``, ``GREATER``, and - ``EQUAL`` are independently tested to see if they are defined - variables, if so their defined values are used otherwise the original - value is used. - -* Both left and right hand arguments to ``STRLESS``, ``STREQUAL``, and - ``STRGREATER`` are independently tested to see if they are defined - variables, if so their defined values are used otherwise the original - value is used. - -* Both left and right hand arguments to ``VERSION_LESS``, - ``VERSION_EQUAL``, and ``VERSION_GREATER`` are independently tested - to see if they are defined variables, if so their defined values are - used otherwise the original value is used. - -* The right hand argument to ``NOT`` is tested to see if it is a boolean - constant, if so the value is used, otherwise it is assumed to be a - variable and it is dereferenced. - -* The left and right hand arguments to ``AND`` and ``OR`` are independently - tested to see if they are boolean constants, if so they are used as - such, otherwise they are assumed to be variables and are dereferenced. - -To prevent ambiguity, potential variable or keyword names can be -specified in a :ref:`Quoted Argument` or a :ref:`Bracket Argument`. -A quoted or bracketed variable or keyword will be interpreted as a -string and not dereferenced or interpreted. -See policy :policy:`CMP0054`. |