Upstream version 3.6.0

-----BEGIN PGP SIGNATURE-----
 
 iQIcBAABCgAGBQJXgMI4AAoJEP4ixv2DE11FZM8P/jyc83o2r/k3wOcOoPUUxeCS
 cmk5TDTyrlloxtH9UQEduE+VzH896lehV/41SA29t+tRA+Pc6MpjDR+o9lIAX/WY
 dv2TMjcCCvNNCpsJwxJCBZqj1fjGU9SJlY0h0YLR79EoRY+XjdXl+6HIQAD+NNHL
 tlVTPqMyv4gNbYzIaiGfIz8fw1I0yJUzf6vs39yy9WwayoBnZlWY8slvZNBWVN2+
 EogQTG9x3SwgXdFUSXmJVFwl0yPQu5nisviKlEEM56RoSj6lwwSS1rOIU8YMg8tp
 +kJ3edRJ6yXPLaYXL51kWdRvRe725MF1oayC/H4yFx1fkpRMgLltHqBSXUD9TI6Z
 rkkU5Y6kDlx/e/lQyGmcrO8miF1mhLQrJ99wgYYMvrKoE/qL9VmZZiDimxCkELCn
 BD8ensZ/yAtlNeR7qANXOj5Gt/mQNcfRTOnCEDJgWevM1s7viJR0/spwaxHvbIHC
 OMJskuRa4sTJRWo0uJyv4ntBJG5/sFpglGy+eDC0WnDUibGXJXVzpxvCCHQfQzfa
 SDG167PcrJ4l3X8pcR55p8lgH+tvYgIFFeP98/bzQMZt0P/0nJFq6yBqXp38ln7k
 a9fgdwYenD91jtUf1xNyzcL24hQpblweF0azrLcBp5UsGyHFaLi8tMopaZjioWLR
 YoOf6D2E2ISuiiqRaj4B
 =7Pbi
 -----END PGP SIGNATURE-----

Merge tag 'upstream/3.6.0' into experimental

Upstream version 3.6.0

# gpg: Signature made Sa 09 Jul 2016 11:22:00 CEST
# gpg:                using RSA key 0xFE22C6FD83135D45
# gpg: Good signature from "Felix Geyer <felix@fobos.de>" [ultimate]
# gpg:                 aka "Felix Geyer <debfx-pkg@fobos.de>" [ultimate]
# gpg:                 aka "Felix Geyer <debfx@kubuntu.org>" [ultimate]
# gpg:                 aka "Felix Geyer <debfx@fobos.de>" [ultimate]
# gpg:                 aka "Felix Geyer <debfx@ubuntu.com>" [ultimate]
# gpg:                 aka "Felix Geyer <felix.geyer@fobos.de>" [ultimate]
# gpg:                 aka "Felix Geyer <fgeyer@debian.org>" [ultimate]
# Primary key fingerprint: 164C 7051 2F79 2947 6764  AB56 FE22 C6FD 8313 5D45
ci/unstable
Felix Geyer 9 years ago
commit 288265a54d

@ -0,0 +1,9 @@
---
# This configuration requires clang-format 3.8 or higher.
BasedOnStyle: Mozilla
AlignOperands: false
AlwaysBreakAfterReturnType: None
AlwaysBreakAfterDefinitionReturnType: None
ColumnLimit: 79
Standard: Cpp03
...

3
.gitattributes vendored

@ -10,7 +10,6 @@ configure crlf=input
*.bat -crlf *.bat -crlf
*.bat.in -crlf *.bat.in -crlf
*.dsp -crlf *.dsp -crlf
*.dsptemplate -crlf
*.dsw -crlf *.dsw -crlf
*.pfx -crlf *.pfx -crlf
*.png -crlf *.png -crlf
@ -22,3 +21,5 @@ configure crlf=input
*.cxx whitespace=tab-in-indent *.cxx whitespace=tab-in-indent
*.txt whitespace=tab-in-indent *.txt whitespace=tab-in-indent
*.cmake whitespace=tab-in-indent *.cmake whitespace=tab-in-indent
*.rst whitespace=tab-in-indent conflict-marker-size=79

@ -121,14 +121,19 @@ _cmake()
grep -v "^cmake version " )' -- "$cur" ) ) grep -v "^cmake version " )' -- "$cur" ) )
return return
;; ;;
--help-manual)
COMPREPLY=( $( compgen -W '$( cmake --help-manual-list 2>/dev/null|
grep -v "^cmake version " | sed -e "s/([0-9])$//" )' -- "$cur" ) )
return
;;
--help-module) --help-module)
COMPREPLY=( $( compgen -W '$( cmake --help-module-list 2>/dev/null| COMPREPLY=( $( compgen -W '$( cmake --help-module-list 2>/dev/null|
grep -v "^cmake version " )' -- "$cur" ) ) grep -v "^cmake version " )' -- "$cur" ) )
return return
;; ;;
--help-policy) --help-policy)
COMPREPLY=( $( compgen -W '$( cmake --help-policies 2>/dev/null | COMPREPLY=( $( compgen -W '$( cmake --help-policy-list 2>/dev/null |
grep "^ CMP" 2>/dev/null )' -- "$cur" ) ) grep -v "^cmake version " )' -- "$cur" ) )
return return
;; ;;
--help-property) --help-property)

@ -48,6 +48,26 @@ _cpack()
grep -v "^cpack version " )' -- "$cur" ) ) grep -v "^cpack version " )' -- "$cur" ) )
return return
;; ;;
--help-manual)
COMPREPLY=( $( compgen -W '$( cpack --help-manual-list 2>/dev/null|
grep -v "^cpack version " | sed -e "s/([0-9])$//" )' -- "$cur" ) )
return
;;
--help-module)
COMPREPLY=( $( compgen -W '$( cpack --help-module-list 2>/dev/null|
grep -v "^cpack version " )' -- "$cur" ) )
return
;;
--help-policy)
COMPREPLY=( $( compgen -W '$( cpack --help-policy-list 2>/dev/null |
grep -v "^cpack version " )' -- "$cur" ) )
return
;;
--help-property)
COMPREPLY=( $( compgen -W '$( cpack --help-property-list \
2>/dev/null | grep -v "^cpack version " )' -- "$cur" ) )
return
;;
--help-variable) --help-variable)
COMPREPLY=( $( compgen -W '$( cpack --help-variable-list \ COMPREPLY=( $( compgen -W '$( cpack --help-variable-list \
2>/dev/null | grep -v "^cpack version " )' -- "$cur" ) ) 2>/dev/null | grep -v "^cpack version " )' -- "$cur" ) )

@ -72,11 +72,37 @@ _ctest()
COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) ) COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
return return
;; ;;
--help-command) --help-command)
COMPREPLY=( $( compgen -W '$( ctest --help-command-list 2>/dev/null| COMPREPLY=( $( compgen -W '$( ctest --help-command-list 2>/dev/null|
grep -v "^ctest version " )' -- "$cur" ) ) grep -v "^ctest version " )' -- "$cur" ) )
return return
;; ;;
--help-manual)
COMPREPLY=( $( compgen -W '$( ctest --help-manual-list 2>/dev/null|
grep -v "^ctest version " | sed -e "s/([0-9])$//" )' -- "$cur" ) )
return
;;
--help-module)
COMPREPLY=( $( compgen -W '$( ctest --help-module-list 2>/dev/null|
grep -v "^ctest version " )' -- "$cur" ) )
return
;;
--help-policy)
COMPREPLY=( $( compgen -W '$( ctest --help-policy-list 2>/dev/null |
grep -v "^ctest version " )' -- "$cur" ) )
return
;;
--help-property)
COMPREPLY=( $( compgen -W '$( ctest --help-property-list \
2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
return
;;
--help-variable)
COMPREPLY=( $( compgen -W '$( ctest --help-variable-list \
2>/dev/null | grep -v "^ctest version " )' -- "$cur" ) )
return
;;
esac esac
if [[ "$cur" == -* ]]; then if [[ "$cur" == -* ]]; then

@ -228,7 +228,9 @@ the indentation. Otherwise it retains the same position on the line"
;; ;;
;; Indentation increment. ;; Indentation increment.
;; ;;
(defvar cmake-tab-width 2) (defcustom cmake-tab-width 2
"Number of columns to indent cmake blocks"
:type 'integer)
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -304,7 +306,8 @@ and store the result as a list in LISTVAR."
(save-window-excursion (save-window-excursion
(cmake-command-run (concat "--help-" listname "-list") nil temp-buffer-name) (cmake-command-run (concat "--help-" listname "-list") nil temp-buffer-name)
(with-current-buffer temp-buffer-name (with-current-buffer temp-buffer-name
(set listvar (cdr (split-string (buffer-substring-no-properties (point-min) (point-max)) "\n" t)))))) ; FIXME: Ignore first line if it is "cmake version ..." from CMake < 3.0.
(set listvar (split-string (buffer-substring-no-properties (point-min) (point-max)) "\n" t)))))
(symbol-value listvar) (symbol-value listvar)
)) ))
) )

@ -327,7 +327,15 @@ macro (CMAKE_BUILD_UTILITIES)
if(CMAKE_TESTS_CDASH_SERVER) if(CMAKE_TESTS_CDASH_SERVER)
set(CMAKE_CURL_TEST_URL "${CMAKE_TESTS_CDASH_SERVER}/user.php") set(CMAKE_CURL_TEST_URL "${CMAKE_TESTS_CDASH_SERVER}/user.php")
endif() endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL." OFF) set(_CMAKE_USE_OPENSSL_DEFAULT OFF)
if(NOT DEFINED CMAKE_USE_OPENSSL AND NOT WIN32 AND NOT APPLE
AND CMAKE_SYSTEM_NAME MATCHES "(Linux|FreeBSD)")
find_package(OpenSSL QUIET)
if(OPENSSL_FOUND)
set(_CMAKE_USE_OPENSSL_DEFAULT ON)
endif()
endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL." ${_CMAKE_USE_OPENSSL_DEFAULT})
mark_as_advanced(CMAKE_USE_OPENSSL) mark_as_advanced(CMAKE_USE_OPENSSL)
if(CMAKE_USE_OPENSSL) if(CMAKE_USE_OPENSSL)
set(CURL_CA_BUNDLE "" CACHE FILEPATH "Path to SSL CA Certificate Bundle") set(CURL_CA_BUNDLE "" CACHE FILEPATH "Path to SSL CA Certificate Bundle")

@ -23,6 +23,16 @@ Please base all new work on the ``master`` branch. Then use
``git format-patch`` to produce patches suitable to post to ``git format-patch`` to produce patches suitable to post to
the mailing list. the mailing list.
Code Style
==========
We use `clang-format`_ to define our style for C++ code in the CMake source
tree. See the `.clang-format`_ configuration file for our style settings.
Use ``clang-format`` version 3.8 or higher to format source files.
.. _`clang-format`: http://clang.llvm.org/docs/ClangFormat.html
.. _`.clang-format`: .clang-format
License License
======= =======

@ -53,7 +53,7 @@ list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION
"[Qq]t([Cc]ore|[Gg]ui|[Ww]idgets).*warning.*conversion.*may alter its value" "[Qq]t([Cc]ore|[Gg]ui|[Ww]idgets).*warning.*conversion.*may alter its value"
"warning:.*is.*very unsafe.*consider using.*" "warning:.*is.*very unsafe.*consider using.*"
"warning:.*is.*misused, please use.*" "warning:.*is.*misused, please use.*"
"CMakeSetupManifest.xml.*manifest authoring warning.*Unrecognized Element" "cmake.version.manifest.*manifest authoring warning.*Unrecognized Element"
"cc-3968 CC: WARNING File.*" # "implicit" truncation by static_cast "cc-3968 CC: WARNING File.*" # "implicit" truncation by static_cast
"ld: warning: directory not found for option .-(F|L)" "ld: warning: directory not found for option .-(F|L)"
"ld: warning .*/libgcc.a archive's cputype" "ld: warning .*/libgcc.a archive's cputype"
@ -62,6 +62,7 @@ list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION
"warning.*This version of Mac OS X is unsupported" "warning.*This version of Mac OS X is unsupported"
"clang.*: warning: argument unused during compilation: .-g" "clang.*: warning: argument unused during compilation: .-g"
"note: in expansion of macro" # diagnostic context note "note: in expansion of macro" # diagnostic context note
"cm(StringCommand|CTestTestHandler)\\.cxx.*warning.*rand.*may return deterministic values"
"cm(StringCommand|CTestTestHandler)\\.cxx.*warning.*rand.*isn.*t random" # we do not do crypto "cm(StringCommand|CTestTestHandler)\\.cxx.*warning.*rand.*isn.*t random" # we do not do crypto
"cm(StringCommand|CTestTestHandler)\\.cxx.*warning.*srand.*seed choices are.*poor" # we do not do crypto "cm(StringCommand|CTestTestHandler)\\.cxx.*warning.*srand.*seed choices are.*poor" # we do not do crypto
@ -80,6 +81,7 @@ list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION
"index.c.*warning: Access to field.*results in a dereference of a null pointer.*loaded from variable.*" "index.c.*warning: Access to field.*results in a dereference of a null pointer.*loaded from variable.*"
"cm_sha2.*warning: Value stored to.*is never read" "cm_sha2.*warning: Value stored to.*is never read"
"testProcess.*warning: Dereference of null pointer .loaded from variable .invalidAddress.." "testProcess.*warning: Dereference of null pointer .loaded from variable .invalidAddress.."
"liblzma/simple/x86.c:[0-9]+:[0-9]+: warning: The result of the '<<' expression is undefined"
) )
if(NOT "@CMAKE_GENERATOR@" MATCHES "Xcode") if(NOT "@CMAKE_GENERATOR@" MATCHES "Xcode")

@ -76,9 +76,12 @@ The options are:
The optional ``ARGS`` argument is for backward compatibility and The optional ``ARGS`` argument is for backward compatibility and
will be ignored. will be ignored.
If ``COMMAND`` specifies an executable target (created by the If ``COMMAND`` specifies an executable target name (created by the
:command:`add_executable` command) it will automatically be replaced :command:`add_executable` command) it will automatically be replaced
by the location of the executable created at build time. by the location of the executable created at build time. If set, the
:prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will
also be prepended to the command to allow the executable to run on
the host.
(Use the ``TARGET_FILE`` (Use the ``TARGET_FILE``
:manual:`generator expression <cmake-generator-expressions(7)>` to :manual:`generator expression <cmake-generator-expressions(7)>` to
reference an executable later in the command line.) reference an executable later in the command line.)

@ -58,9 +58,12 @@ The options are:
:command:`file(GENERATE)` command to create it, and then specify :command:`file(GENERATE)` command to create it, and then specify
a ``COMMAND`` to launch it.) a ``COMMAND`` to launch it.)
If ``COMMAND`` specifies an executable target (created by the If ``COMMAND`` specifies an executable target name (created by the
:command:`add_executable` command) it will automatically be replaced :command:`add_executable` command) it will automatically be replaced
by the location of the executable created at build time. by the location of the executable created at build time. If set, the
:prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will
also be prepended to the command to allow the executable to run on
the host.
Additionally a target-level dependency will be added so that the Additionally a target-level dependency will be added so that the
executable target will be built before this custom target. executable target will be built before this custom target.

@ -73,7 +73,7 @@ does not appear in the generated buildsystem as a make target. The
``<target>`` may not be an :ref:`Imported Target <Imported Targets>` or an ``<target>`` may not be an :ref:`Imported Target <Imported Targets>` or an
``ALIAS``. ``ALIAS`` targets can be used as targets to read properties ``ALIAS``. ``ALIAS`` targets can be used as targets to read properties
from, executables for custom commands and custom targets. They can also be from, executables for custom commands and custom targets. They can also be
tested for existance with the regular :command:`if(TARGET)` subcommand. tested for existence with the regular :command:`if(TARGET)` subcommand.
The ``<name>`` may not be used to modify properties of ``<target>``, that The ``<name>`` may not be used to modify properties of ``<target>``, that
is, it may not be used as the operand of :command:`set_property`, is, it may not be used as the operand of :command:`set_property`,
:command:`set_target_properties`, :command:`target_link_libraries` etc. :command:`set_target_properties`, :command:`target_link_libraries` etc.

@ -123,7 +123,7 @@ used to refer to ``<target>`` in subsequent commands. The ``<name>`` does
not appear in the generatedbuildsystem as a make target. The ``<target>`` not appear in the generatedbuildsystem as a make target. The ``<target>``
may not be an :ref:`Imported Target <Imported Targets>` or an ``ALIAS``. may not be an :ref:`Imported Target <Imported Targets>` or an ``ALIAS``.
``ALIAS`` targets can be used as linkable targets and as targets to ``ALIAS`` targets can be used as linkable targets and as targets to
read properties from. They can also be tested for existance with the read properties from. They can also be tested for existence with the
regular :command:`if(TARGET)` subcommand. The ``<name>`` may not be used regular :command:`if(TARGET)` subcommand. The ``<name>`` may not be used
to modify properties of ``<target>``, that is, it may not be used as the to modify properties of ``<target>``, that is, it may not be used as the
operand of :command:`set_property`, :command:`set_target_properties`, operand of :command:`set_property`, :command:`set_target_properties`,

@ -35,7 +35,7 @@ compatibility. Use the first signature instead.
It sets the given ``<cachevariable>`` to a command-line string as It sets the given ``<cachevariable>`` to a command-line string as
above but without the ``--target`` option. above but without the ``--target`` option.
The ``<makecommand>`` is ignored but should be the full path to The ``<makecommand>`` is ignored but should be the full path to
msdev, devenv, nmake, make or one of the end user build tools devenv, nmake, make or one of the end user build tools
for legacy invocations. for legacy invocations.
.. note:: .. note::

@ -1,29 +1,14 @@
cmake_minimum_required cmake_minimum_required
---------------------- ----------------------
Set the minimum required version of cmake for a project. Set the minimum required version of cmake for a project and
update `Policy Settings`_ to match the version given::
::
cmake_minimum_required(VERSION major.minor[.patch[.tweak]] cmake_minimum_required(VERSION major.minor[.patch[.tweak]]
[FATAL_ERROR]) [FATAL_ERROR])
If the current version of CMake is lower than that required it will If the current version of CMake is lower than that required it will
stop processing the project and report an error. When a version stop processing the project and report an error.
higher than 2.4 is specified the command implicitly invokes
::
cmake_policy(VERSION major[.minor[.patch[.tweak]]])
which sets the cmake policy version level to the version specified.
When version 2.4 or lower is given the command implicitly invokes
::
cmake_policy(VERSION 2.4)
which enables compatibility features for CMake 2.4 and lower.
The ``FATAL_ERROR`` option is accepted but ignored by CMake 2.6 and The ``FATAL_ERROR`` option is accepted but ignored by CMake 2.6 and
higher. It should be specified so CMake versions 2.4 and lower fail higher. It should be specified so CMake versions 2.4 and lower fail
@ -39,3 +24,27 @@ with an error instead of just a warning.
Calling ``cmake_minimum_required()`` inside a :command:`function` Calling ``cmake_minimum_required()`` inside a :command:`function`
limits some effects to the function scope when invoked. Such calls limits some effects to the function scope when invoked. Such calls
should not be made with the intention of having global effects. should not be made with the intention of having global effects.
Policy Settings
^^^^^^^^^^^^^^^
The ``cmake_minimum_required(VERSION)`` command implicitly invokes the
:command:`cmake_policy(VERSION)` command to specify that the current
project code is written for the given version of CMake.
All policies introduced in the specified version or earlier will be
set to use NEW behavior. All policies introduced after the specified
version will be unset. This effectively requests behavior preferred
as of a given CMake version and tells newer CMake versions to warn
about their new policies.
When a version higher than 2.4 is specified the command implicitly
invokes::
cmake_policy(VERSION major[.minor[.patch[.tweak]]])
which sets the cmake policy version level to the version specified.
When version 2.4 or lower is given the command implicitly invokes::
cmake_policy(VERSION 2.4)
which enables compatibility features for CMake 2.4 and lower.

@ -25,3 +25,7 @@ The options are:
have otherwise printed to the console. CTest will still report have otherwise printed to the console. CTest will still report
the new revision of the repository and any conflicting files the new revision of the repository and any conflicting files
that were found. that were found.
The update always follows the version control branch currently checked
out in the source directory. See the :ref:`CTest Update Step`
documentation for more information.

@ -103,8 +103,9 @@ Generate a list of files that match the ``<globbing-expressions>`` and
store it into the ``<variable>``. Globbing expressions are similar to store it into the ``<variable>``. Globbing expressions are similar to
regular expressions, but much simpler. If ``RELATIVE`` flag is regular expressions, but much simpler. If ``RELATIVE`` flag is
specified, the results will be returned as relative paths to the given specified, the results will be returned as relative paths to the given
path. No specific order of results is defined. If order is important then path. No specific order of results is defined other than that it is
sort the list explicitly (e.g. using the :command:`list(SORT)` command). deterministic. If order is important then sort the list explicitly
(e.g. using the :command:`list(SORT)` command).
By default ``GLOB`` lists directories - directories are omited in result if By default ``GLOB`` lists directories - directories are omited in result if
``LIST_DIRECTORIES`` is set to false. ``LIST_DIRECTORIES`` is set to false.

@ -14,7 +14,8 @@ find_file
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, .. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``.
On Windows hosts:
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the
directories in ``PATH`` itself. directories in ``PATH`` itself.

@ -14,7 +14,8 @@ find_library
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH` .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH`
.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``LIB``, .. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``LIB``.
On Windows hosts:
``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|,
and the directories in ``PATH`` itself. and the directories in ``PATH`` itself.

@ -14,7 +14,8 @@ find_path
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, .. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``.
On Windows hosts:
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the
directories in ``PATH`` itself. directories in ``PATH`` itself.

@ -19,5 +19,4 @@ command to make things depend on the external project.
``TYPE``, ``GUID`` and ``PLATFORM`` are optional parameters that allow one to ``TYPE``, ``GUID`` and ``PLATFORM`` are optional parameters that allow one to
specify the type of project, id (GUID) of the project and the name of specify the type of project, id (GUID) of the project and the name of
the target platform. This is useful for projects requiring values the target platform. This is useful for projects requiring values
other than the default (e.g. WIX projects). These options are not other than the default (e.g. WIX projects).
supported by the Visual Studio 6 generator.

@ -45,11 +45,15 @@ signatures that specify them. The common options are:
is associated, such as "runtime" or "development". During is associated, such as "runtime" or "development". During
component-specific installation only install rules associated with component-specific installation only install rules associated with
the given component name will be executed. During a full installation the given component name will be executed. During a full installation
all components are installed. If ``COMPONENT`` is not provided a all components are installed unless marked with ``EXCLUDE_FROM_ALL``.
default component "Unspecified" is created. The default component If ``COMPONENT`` is not provided a default component "Unspecified" is
name may be controlled with the created. The default component name may be controlled with the
:variable:`CMAKE_INSTALL_DEFAULT_COMPONENT_NAME` variable. :variable:`CMAKE_INSTALL_DEFAULT_COMPONENT_NAME` variable.
``EXCLUDE_FROM_ALL``
Specify that the file is excluded from a full installation and only
installed as part of a component-specific installation
``RENAME`` ``RENAME``
Specify a name for an installed file that may be different from the Specify a name for an installed file that may be different from the
original file. Renaming is allowed only when a single file is original file. Renaming is allowed only when a single file is
@ -75,7 +79,8 @@ Installing Targets
[PERMISSIONS permissions...] [PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]] [CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>] [COMPONENT <component>]
[OPTIONAL] [NAMELINK_ONLY|NAMELINK_SKIP] [OPTIONAL] [EXCLUDE_FROM_ALL]
[NAMELINK_ONLY|NAMELINK_SKIP]
] [...] ] [...]
[INCLUDES DESTINATION [<dir> ...]] [INCLUDES DESTINATION [<dir> ...]]
) )
@ -177,7 +182,7 @@ Installing Files
[PERMISSIONS permissions...] [PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]] [CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>] [COMPONENT <component>]
[RENAME <name>] [OPTIONAL]) [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])
The ``FILES`` form specifies rules for installing files for a project. The ``FILES`` form specifies rules for installing files for a project.
File names given as relative paths are interpreted with respect to the File names given as relative paths are interpreted with respect to the
@ -211,7 +216,8 @@ Installing Directories
[DIRECTORY_PERMISSIONS permissions...] [DIRECTORY_PERMISSIONS permissions...]
[USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER] [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
[CONFIGURATIONS [Debug|Release|...]] [CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>] [FILES_MATCHING] [COMPONENT <component>] [EXCLUDE_FROM_ALL]
[FILES_MATCHING]
[[PATTERN <pattern> | REGEX <regex>] [[PATTERN <pattern> | REGEX <regex>]
[EXCLUDE] [PERMISSIONS permissions...]] [...]) [EXCLUDE] [PERMISSIONS permissions...]] [...])
@ -287,7 +293,7 @@ Custom Installation Logic
:: ::
install([[SCRIPT <file>] [CODE <code>]] install([[SCRIPT <file>] [CODE <code>]]
[COMPONENT <component>] [...]) [COMPONENT <component>] [EXCLUDE_FROM_ALL] [...])
The ``SCRIPT`` form will invoke the given CMake script files during The ``SCRIPT`` form will invoke the given CMake script files during
installation. If the script file name is a relative path it will be installation. If the script file name is a relative path it will be
@ -312,7 +318,8 @@ Installing Exports
[PERMISSIONS permissions...] [PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]] [CONFIGURATIONS [Debug|Release|...]]
[EXPORT_LINK_INTERFACE_LIBRARIES] [EXPORT_LINK_INTERFACE_LIBRARIES]
[COMPONENT <component>]) [COMPONENT <component>]
[EXCLUDE_FROM_ALL])
The ``EXPORT`` form generates and installs a CMake file containing code to The ``EXPORT`` form generates and installs a CMake file containing code to
import targets from the installation tree into another project. import targets from the installation tree into another project.

@ -9,6 +9,7 @@ List operations.
list(GET <list> <element index> [<element index> ...] list(GET <list> <element index> [<element index> ...]
<output variable>) <output variable>)
list(APPEND <list> [<element> ...]) list(APPEND <list> [<element> ...])
list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
list(FIND <list> <value> <output variable>) list(FIND <list> <value> <output variable>)
list(INSERT <list> <element_index> <element> [<element> ...]) list(INSERT <list> <element_index> <element> [<element> ...])
list(REMOVE_ITEM <list> <value> [<value> ...]) list(REMOVE_ITEM <list> <value> [<value> ...])
@ -23,6 +24,12 @@ List operations.
``APPEND`` will append elements to the list. ``APPEND`` will append elements to the list.
``FILTER`` will include or remove items from the list that match the
mode's pattern.
In ``REGEX`` mode, items will be matched against the given regular expression.
For more information on regular expressions see also the :command:`string`
command.
``FIND`` will return the index of the element specified in the list or -1 ``FIND`` will return the index of the element specified in the list or -1
if it wasn't found. if it wasn't found.
@ -38,9 +45,9 @@ difference is that ``REMOVE_ITEM`` will remove the given items, while
``SORT`` sorts the list in-place alphabetically. ``SORT`` sorts the list in-place alphabetically.
The list subcommands ``APPEND``, ``INSERT``, ``REMOVE_AT``, ``REMOVE_ITEM``, The list subcommands ``APPEND``, ``INSERT``, ``FILTER``, ``REMOVE_AT``,
``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create new values for ``REMOVE_ITEM``, ``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create new
the list within the current CMake variable scope. Similar to the values for the list within the current CMake variable scope. Similar to the
:command:`set` command, the LIST command creates new variable values in the :command:`set` command, the LIST command creates new variable values in the
current scope, even if the list itself is actually defined in a parent current scope, even if the list itself is actually defined in a parent
scope. To propagate the results of these operations upwards, use scope. To propagate the results of these operations upwards, use

@ -277,6 +277,7 @@ specifiers:
%j The day of the current year (001-366). %j The day of the current year (001-366).
%m The month of the current year (01-12). %m The month of the current year (01-12).
%M The minute of the current hour (00-59). %M The minute of the current hour (00-59).
%s Seconds since midnight (UTC) 1-Jan-1970 (UNIX time).
%S The second of the current minute. %S The second of the current minute.
60 represents a leap second. (00-60) 60 represents a leap second. (00-60)
%U The week number of the current year (00-53). %U The week number of the current year (00-53).

@ -112,3 +112,10 @@ The current setting of :policy:`CMP0065` is set in the generated project.
Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose
a build configuration. a build configuration.
Set the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to specify
the type of target used for the source file signature.
Set the :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable to specify
variables that must be propagated into the test project. This variable is
meant for use only in toolchain files.

@ -6,3 +6,7 @@ Generates build.ninja files.
A build.ninja file is generated into the build tree. Recent versions A build.ninja file is generated into the build tree. Recent versions
of the ninja program can build the project through the "all" target. of the ninja program can build the project through the "all" target.
An "install" target is also provided. An "install" target is also provided.
For each subdirectory ``sub/dir`` of the project an additional target
named ``sub/dir/all`` is generated that depends on all targets required
by that subdirectory.

@ -1,10 +1,6 @@
Visual Studio 6 Visual Studio 6
--------------- ---------------
Deprected. Generates Visual Studio 6 project files. Removed. This once generated Visual Studio 6 project files, but the
generator has been removed since CMake 3.6. It is still possible to
.. note:: build with VS 6 tools using the :generator:`NMake Makefiles` generator.
This generator is deprecated and will be removed
in a future version of CMake. It will still be
possible to build with VS 6 tools using the
:generator:`NMake Makefiles` generator.

@ -1,4 +1,10 @@
Visual Studio 7 .NET 2003 Visual Studio 7 .NET 2003
------------------------- -------------------------
Generates Visual Studio .NET 2003 project files. Deprecated. Generates Visual Studio .NET 2003 project files.
.. note::
This generator is deprecated and will be removed
in a future version of CMake. It will still be
possible to build with VS 7.1 tools using the
:generator:`NMake Makefiles` generator.

@ -1,10 +1,6 @@
Visual Studio 7 Visual Studio 7
--------------- ---------------
Deprected. Generates Visual Studio .NET 2002 project files. Removed. This once generated Visual Studio .NET 2002 project files, but
the generator has been removed since CMake 3.6. It is still possible to
.. note:: build with VS 7.0 tools using the :generator:`NMake Makefiles` generator.
This generator is deprecated and will be removed
in a future version of CMake. It will still be
possible to build with VS 7.0 tools using the
:generator:`NMake Makefiles` generator.

@ -150,7 +150,7 @@ and :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
Each of the commands has a ``PRIVATE``, ``PUBLIC`` and ``INTERFACE`` mode. The Each of the commands has a ``PRIVATE``, ``PUBLIC`` and ``INTERFACE`` mode. The
``PRIVATE`` mode populates only the non-``INTERFACE_`` variant of the target ``PRIVATE`` mode populates only the non-``INTERFACE_`` variant of the target
property and the ``INTERFACE`` mode populates only the ``INTERFACE_`` variants. property and the ``INTERFACE`` mode populates only the ``INTERFACE_`` variants.
The ``PUBLIC`` mode populates both variants of the repective target property. The ``PUBLIC`` mode populates both variants of the respective target property.
Each command may be invoked with multiple uses of each keyword: Each command may be invoked with multiple uses of each keyword:
.. code-block:: cmake .. code-block:: cmake

@ -309,3 +309,4 @@ versions specified for each:
* ``GNU``: GNU compiler versions 4.4 through 5.0. * ``GNU``: GNU compiler versions 4.4 through 5.0.
* ``MSVC``: Microsoft Visual Studio versions 2010 through 2015. * ``MSVC``: Microsoft Visual Studio versions 2010 through 2015.
* ``SunPro``: Oracle SolarisStudio version 12.4. * ``SunPro``: Oracle SolarisStudio version 12.4.
* ``Intel``: Intel compiler versions 12.1 through 16.0 on UNIX platforms.

@ -225,7 +225,7 @@ comparison::
-I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I> -I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I>
generates a string of the entries in the :prop_tgt:`INCLUDE_DIRECTORIES` target generates a string of the entries in the :prop_tgt:`INCLUDE_DIRECTORIES` target
property with each entry preceeded by ``-I``. Note that a more-complete use property with each entry preceded by ``-I``. Note that a more-complete use
in this situation would require first checking if the INCLUDE_DIRECTORIES in this situation would require first checking if the INCLUDE_DIRECTORIES
property is non-empty:: property is non-empty::

@ -135,6 +135,7 @@ All Modules
/module/FindLibLZMA /module/FindLibLZMA
/module/FindLibXml2 /module/FindLibXml2
/module/FindLibXslt /module/FindLibXslt
/module/FindLTTngUST
/module/FindLua50 /module/FindLua50
/module/FindLua51 /module/FindLua51
/module/FindLua /module/FindLua

@ -645,7 +645,7 @@ Disabling the Package Registry
------------------------------ ------------------------------
In some cases using the Package Registries is not desirable. CMake In some cases using the Package Registries is not desirable. CMake
allows to disable them using the following variables: allows one to disable them using the following variables:
* :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` disables the * :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` disables the
:command:`export(PACKAGE)` command. :command:`export(PACKAGE)` command.

@ -51,75 +51,117 @@ The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used
to determine whether to report an error on use of deprecated macros or to determine whether to report an error on use of deprecated macros or
functions. functions.
All Policies Policies Introduced by CMake 3.4
============ ================================
.. toctree::
:maxdepth: 1
CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065>
CMP0064: Support new TEST if() operator. </policy/CMP0064>
Policies Introduced by CMake 3.3
================================
.. toctree::
:maxdepth: 1
CMP0063: Honor visibility properties for all target types. </policy/CMP0063>
CMP0062: Disallow install() of export() result. </policy/CMP0062>
CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061>
CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060>
CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059>
CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058>
CMP0057: Support new IN_LIST if() operator. </policy/CMP0057>
Policies Introduced by CMake 3.2
================================
.. toctree::
:maxdepth: 1
CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056>
CMP0055: Strict checking for break() command. </policy/CMP0055>
Policies Introduced by CMake 3.1
================================
.. toctree::
:maxdepth: 1
CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054>
CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053>
CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052>
CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051>
Policies Introduced by CMake 3.0
================================
.. toctree::
:maxdepth: 1
CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050>
CMP0049: Do not expand variables in target source entries. </policy/CMP0049>
CMP0048: project() command manages VERSION variables. </policy/CMP0048>
CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047>
CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046>
CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045>
CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044>
CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043>
CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042>
CMP0041: Error on relative include with generator expression. </policy/CMP0041>
CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040>
CMP0039: Utility targets may not have link dependencies. </policy/CMP0039>
CMP0038: Targets may not link directly to themselves. </policy/CMP0038>
CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037>
CMP0036: The build_name command should not be called. </policy/CMP0036>
CMP0035: The variable_requires command should not be called. </policy/CMP0035>
CMP0034: The utility_source command should not be called. </policy/CMP0034>
CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033>
CMP0032: The output_required_files command should not be called. </policy/CMP0032>
CMP0031: The load_command command should not be called. </policy/CMP0031>
CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030>
CMP0029: The subdir_depends command should not be called. </policy/CMP0029>
CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028>
CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027>
CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026>
CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025>
CMP0024: Disallow include export result. </policy/CMP0024>
Policies Introduced by CMake 2.8
================================
.. toctree::
:maxdepth: 1
CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023>
CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022>
CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021>
CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020>
CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019>
CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018>
CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017>
CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016>
CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015>
CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014>
CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013>
CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012>
Policies Introduced by CMake 2.6
================================
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
/policy/CMP0000 CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011>
/policy/CMP0001 CMP0010: Bad variable reference syntax is an error. </policy/CMP0010>
/policy/CMP0002 CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009>
/policy/CMP0003 CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008>
/policy/CMP0004 CMP0007: list command no longer ignores empty elements. </policy/CMP0007>
/policy/CMP0005 CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006>
/policy/CMP0006 CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005>
/policy/CMP0007 CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004>
/policy/CMP0008 CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003>
/policy/CMP0009 CMP0002: Logical target names must be globally unique. </policy/CMP0002>
/policy/CMP0010 CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001>
/policy/CMP0011 CMP0000: A minimum required CMake version must be specified. </policy/CMP0000>
/policy/CMP0012
/policy/CMP0013
/policy/CMP0014
/policy/CMP0015
/policy/CMP0016
/policy/CMP0017
/policy/CMP0018
/policy/CMP0019
/policy/CMP0020
/policy/CMP0021
/policy/CMP0022
/policy/CMP0023
/policy/CMP0024
/policy/CMP0025
/policy/CMP0026
/policy/CMP0027
/policy/CMP0028
/policy/CMP0029
/policy/CMP0030
/policy/CMP0031
/policy/CMP0032
/policy/CMP0033
/policy/CMP0034
/policy/CMP0035
/policy/CMP0036
/policy/CMP0037
/policy/CMP0038
/policy/CMP0039
/policy/CMP0040
/policy/CMP0041
/policy/CMP0042
/policy/CMP0043
/policy/CMP0044
/policy/CMP0045
/policy/CMP0046
/policy/CMP0047
/policy/CMP0048
/policy/CMP0049
/policy/CMP0050
/policy/CMP0051
/policy/CMP0052
/policy/CMP0053
/policy/CMP0054
/policy/CMP0055
/policy/CMP0056
/policy/CMP0057
/policy/CMP0058
/policy/CMP0059
/policy/CMP0060
/policy/CMP0061
/policy/CMP0062
/policy/CMP0063
/policy/CMP0064
/policy/CMP0065

@ -76,6 +76,7 @@ Properties on Directories
/prop_dir/VARIABLES /prop_dir/VARIABLES
/prop_dir/VS_GLOBAL_SECTION_POST_section /prop_dir/VS_GLOBAL_SECTION_POST_section
/prop_dir/VS_GLOBAL_SECTION_PRE_section /prop_dir/VS_GLOBAL_SECTION_PRE_section
/prop_dir/VS_STARTUP_PROJECT
.. _`Target Properties`: .. _`Target Properties`:
@ -141,6 +142,7 @@ Properties on Targets
/prop_tgt/CXX_STANDARD_REQUIRED /prop_tgt/CXX_STANDARD_REQUIRED
/prop_tgt/DEBUG_POSTFIX /prop_tgt/DEBUG_POSTFIX
/prop_tgt/DEFINE_SYMBOL /prop_tgt/DEFINE_SYMBOL
/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
/prop_tgt/EchoString /prop_tgt/EchoString
/prop_tgt/ENABLE_EXPORTS /prop_tgt/ENABLE_EXPORTS
/prop_tgt/EXCLUDE_FROM_ALL /prop_tgt/EXCLUDE_FROM_ALL
@ -195,6 +197,7 @@ Properties on Targets
/prop_tgt/JOB_POOL_COMPILE /prop_tgt/JOB_POOL_COMPILE
/prop_tgt/JOB_POOL_LINK /prop_tgt/JOB_POOL_LINK
/prop_tgt/LABELS /prop_tgt/LABELS
/prop_tgt/LANG_CLANG_TIDY
/prop_tgt/LANG_COMPILER_LAUNCHER /prop_tgt/LANG_COMPILER_LAUNCHER
/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE
/prop_tgt/LANG_VISIBILITY_PRESET /prop_tgt/LANG_VISIBILITY_PRESET
@ -255,6 +258,7 @@ Properties on Targets
/prop_tgt/TYPE /prop_tgt/TYPE
/prop_tgt/VERSION /prop_tgt/VERSION
/prop_tgt/VISIBILITY_INLINES_HIDDEN /prop_tgt/VISIBILITY_INLINES_HIDDEN
/prop_tgt/VS_CONFIGURATION_TYPE
/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION /prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION
/prop_tgt/VS_DOTNET_REFERENCES /prop_tgt/VS_DOTNET_REFERENCES
/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION /prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION
@ -302,6 +306,7 @@ Properties on Tests
/prop_test/RUN_SERIAL /prop_test/RUN_SERIAL
/prop_test/SKIP_RETURN_CODE /prop_test/SKIP_RETURN_CODE
/prop_test/TIMEOUT /prop_test/TIMEOUT
/prop_test/TIMEOUT_AFTER_MATCH
/prop_test/WILL_FAIL /prop_test/WILL_FAIL
/prop_test/WORKING_DIRECTORY /prop_test/WORKING_DIRECTORY

@ -138,9 +138,10 @@ a path on the host to install to. The :variable:`CMAKE_INSTALL_PREFIX` is always
the runtime installation location, even when cross-compiling. the runtime installation location, even when cross-compiling.
The :variable:`CMAKE_<LANG>_COMPILER` variables may be set to full paths, or to The :variable:`CMAKE_<LANG>_COMPILER` variables may be set to full paths, or to
names of compilers to search for in standard locations. In cases where CMake does names of compilers to search for in standard locations. For toolchains that
not have enough information to extract information from the compiler, the do not support linking binaries without custom flags or scripts one may set
:module:`CMakeForceCompiler` module can be used to bypass some of the checks. the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to ``STATIC_LIBRARY``
to tell CMake not to try to link executables during its checks.
CMake ``find_*`` commands will look in the sysroot, and the :variable:`CMAKE_FIND_ROOT_PATH` CMake ``find_*`` commands will look in the sysroot, and the :variable:`CMAKE_FIND_ROOT_PATH`
entries by default in all cases, as well as looking in the host system root prefix. entries by default in all cases, as well as looking in the host system root prefix.

@ -68,7 +68,6 @@ Variables that Provide Information
/variable/CMAKE_SKIP_INSTALL_RULES /variable/CMAKE_SKIP_INSTALL_RULES
/variable/CMAKE_SKIP_RPATH /variable/CMAKE_SKIP_RPATH
/variable/CMAKE_SOURCE_DIR /variable/CMAKE_SOURCE_DIR
/variable/CMAKE_STANDARD_LIBRARIES
/variable/CMAKE_STATIC_LIBRARY_PREFIX /variable/CMAKE_STATIC_LIBRARY_PREFIX
/variable/CMAKE_STATIC_LIBRARY_SUFFIX /variable/CMAKE_STATIC_LIBRARY_SUFFIX
/variable/CMAKE_TOOLCHAIN_FILE /variable/CMAKE_TOOLCHAIN_FILE
@ -78,7 +77,6 @@ Variables that Provide Information
/variable/CMAKE_VS_DEVENV_COMMAND /variable/CMAKE_VS_DEVENV_COMMAND
/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION /variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
/variable/CMAKE_VS_MSBUILD_COMMAND /variable/CMAKE_VS_MSBUILD_COMMAND
/variable/CMAKE_VS_MSDEV_COMMAND
/variable/CMAKE_VS_NsightTegra_VERSION /variable/CMAKE_VS_NsightTegra_VERSION
/variable/CMAKE_VS_PLATFORM_NAME /variable/CMAKE_VS_PLATFORM_NAME
/variable/CMAKE_VS_PLATFORM_TOOLSET /variable/CMAKE_VS_PLATFORM_TOOLSET
@ -115,7 +113,12 @@ Variables that Change Behavior
/variable/CMAKE_COLOR_MAKEFILE /variable/CMAKE_COLOR_MAKEFILE
/variable/CMAKE_CONFIGURATION_TYPES /variable/CMAKE_CONFIGURATION_TYPES
/variable/CMAKE_DEBUG_TARGET_PROPERTIES /variable/CMAKE_DEBUG_TARGET_PROPERTIES
/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY
/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName /variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName
/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS
/variable/CMAKE_ECLIPSE_VERSION
/variable/CMAKE_ERROR_DEPRECATED /variable/CMAKE_ERROR_DEPRECATED
/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
/variable/CMAKE_EXPORT_COMPILE_COMMANDS /variable/CMAKE_EXPORT_COMPILE_COMMANDS
@ -175,6 +178,7 @@ Variables that Describe the System
/variable/CMAKE_CL_64 /variable/CMAKE_CL_64
/variable/CMAKE_COMPILER_2005 /variable/CMAKE_COMPILER_2005
/variable/CMAKE_HOST_APPLE /variable/CMAKE_HOST_APPLE
/variable/CMAKE_HOST_SOLARIS
/variable/CMAKE_HOST_SYSTEM_NAME /variable/CMAKE_HOST_SYSTEM_NAME
/variable/CMAKE_HOST_SYSTEM_PROCESSOR /variable/CMAKE_HOST_SYSTEM_PROCESSOR
/variable/CMAKE_HOST_SYSTEM /variable/CMAKE_HOST_SYSTEM
@ -259,6 +263,7 @@ Variables that Control the Build
/variable/CMAKE_INSTALL_RPATH /variable/CMAKE_INSTALL_RPATH
/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH
/variable/CMAKE_IOS_INSTALL_COMBINED /variable/CMAKE_IOS_INSTALL_COMBINED
/variable/CMAKE_LANG_CLANG_TIDY
/variable/CMAKE_LANG_COMPILER_LAUNCHER /variable/CMAKE_LANG_COMPILER_LAUNCHER
/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE
/variable/CMAKE_LANG_VISIBILITY_PRESET /variable/CMAKE_LANG_VISIBILITY_PRESET
@ -275,6 +280,7 @@ Variables that Control the Build
/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG /variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG
/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG /variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG
/variable/CMAKE_MODULE_LINKER_FLAGS /variable/CMAKE_MODULE_LINKER_FLAGS
/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX
/variable/CMAKE_NO_BUILTIN_CHRPATH /variable/CMAKE_NO_BUILTIN_CHRPATH
/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED /variable/CMAKE_NO_SYSTEM_FROM_IMPORTED
/variable/CMAKE_OSX_ARCHITECTURES /variable/CMAKE_OSX_ARCHITECTURES
@ -292,6 +298,8 @@ Variables that Control the Build
/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG /variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG
/variable/CMAKE_STATIC_LINKER_FLAGS /variable/CMAKE_STATIC_LINKER_FLAGS
/variable/CMAKE_TRY_COMPILE_CONFIGURATION /variable/CMAKE_TRY_COMPILE_CONFIGURATION
/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
/variable/CMAKE_TRY_COMPILE_TARGET_TYPE
/variable/CMAKE_USE_RELATIVE_PATHS /variable/CMAKE_USE_RELATIVE_PATHS
/variable/CMAKE_VISIBILITY_INLINES_HIDDEN /variable/CMAKE_VISIBILITY_INLINES_HIDDEN
/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
@ -358,6 +366,8 @@ Variables for Languages
/variable/CMAKE_LANG_SIMULATE_VERSION /variable/CMAKE_LANG_SIMULATE_VERSION
/variable/CMAKE_LANG_SIZEOF_DATA_PTR /variable/CMAKE_LANG_SIZEOF_DATA_PTR
/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS /variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS
/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES
/variable/CMAKE_LANG_STANDARD_LIBRARIES
/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG /variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG
Variables for CTest Variables for CTest
@ -406,6 +416,7 @@ Variables for CTest
/variable/CTEST_DROP_SITE_USER /variable/CTEST_DROP_SITE_USER
/variable/CTEST_EXTRA_COVERAGE_GLOB /variable/CTEST_EXTRA_COVERAGE_GLOB
/variable/CTEST_GIT_COMMAND /variable/CTEST_GIT_COMMAND
/variable/CTEST_GIT_INIT_SUBMODULES
/variable/CTEST_GIT_UPDATE_CUSTOM /variable/CTEST_GIT_UPDATE_CUSTOM
/variable/CTEST_GIT_UPDATE_OPTIONS /variable/CTEST_GIT_UPDATE_OPTIONS
/variable/CTEST_HG_COMMAND /variable/CTEST_HG_COMMAND

@ -10,7 +10,7 @@ Synopsis
cmake [<options>] (<path-to-source> | <path-to-existing-build>) cmake [<options>] (<path-to-source> | <path-to-existing-build>)
cmake [(-D <var>=<value>)...] -P <cmake-script-file> cmake [(-D <var>=<value>)...] -P <cmake-script-file>
cmake --build <dir> [<options>] [-- <build-tool-options>...] cmake --build <dir> [<options>...] [-- <build-tool-options>...]
cmake -E <command> [<options>...] cmake -E <command> [<options>...]
cmake --find-package <options>... cmake --find-package <options>...
@ -49,22 +49,7 @@ Options
display help for each variable. display help for each variable.
``--build <dir>`` ``--build <dir>``
Build a CMake-generated project binary tree. See `Build Tool Mode`_.
This abstracts a native build tool's command-line interface with the
following options:
::
<dir> = Project binary directory to be built.
--target <tgt> = Build <tgt> instead of default targets.
--config <cfg> = For multi-configuration tools, choose <cfg>.
--clean-first = Build target 'clean' first, then build.
(To clean only, use --target 'clean'.)
--use-stderr = Ignored. Behavior is default in CMake >= 3.0.
-- = Pass remaining options to the native tool.
Run cmake --build with no options for quick help.
``-N`` ``-N``
View mode only. View mode only.
@ -81,12 +66,7 @@ Options
done before the -P argument. done before the -P argument.
``--find-package`` ``--find-package``
Run in pkg-config like mode. See `Find-Package Tool Mode`_.
Search a package using find_package() and print the resulting flags
to stdout. This can be used to use cmake instead of pkg-config to
find installed libraries in plain Makefile-based projects or in
autoconf-based projects (via share/aclocal/cmake.m4).
``--graphviz=[file]`` ``--graphviz=[file]``
Generate graphviz of dependencies, see CMakeGraphVizOptions.cmake for more. Generate graphviz of dependencies, see CMakeGraphVizOptions.cmake for more.
@ -153,6 +133,38 @@ Options
.. include:: OPTIONS_HELP.txt .. include:: OPTIONS_HELP.txt
Build Tool Mode
===============
CMake provides a command-line signature to build an already-generated
project binary tree::
cmake --build <dir> [<options>...] [-- <build-tool-options>...]
This abstracts a native build tool's command-line interface with the
following options:
``--build <dir>``
Project binary directory to be built. This is required and must be first.
``--target <tgt>``
Build ``<tgt>`` instead of default targets. May only be specified once.
``--config <cfg>``
For multi-configuration tools, choose configuration ``<cfg>``.
``--clean-first``
Build target ``clean`` first, then build.
(To clean only, use ``--target clean``.)
``--use-stderr``
Ignored. Behavior is default in CMake >= 3.0.
``--``
Pass remaining options to the native tool.
Run ``cmake --build`` with no options for quick help.
Command-Line Tool Mode Command-Line Tool Mode
====================== ======================
@ -168,7 +180,7 @@ Available commands are:
``compare_files <file1> <file2>`` ``compare_files <file1> <file2>``
Check if ``<file1>`` is same as ``<file2>``. If files are the same, Check if ``<file1>`` is same as ``<file2>``. If files are the same,
then returns 0, if not itreturns 1. then returns 0, if not it returns 1.
``copy <file>... <destination>`` ``copy <file>... <destination>``
Copy files to ``<destination>`` (either file or directory). Copy files to ``<destination>`` (either file or directory).
@ -203,7 +215,10 @@ Available commands are:
silently ignored. silently ignored.
``md5sum <file>...`` ``md5sum <file>...``
Compute md5sum of files. Create MD5 checksum of files in ``md5sum`` compatible format::
351abe79cd3800b38cdfb25d45015a15 file1.txt
052f86c15bbde68af55c7f7b340ab639 file2.txt
``remove [-f] <file>...`` ``remove [-f] <file>...``
Remove the file(s), use ``-f`` to force it. If a file does Remove the file(s), use ``-f`` to force it. If a file does
@ -274,6 +289,24 @@ The following ``cmake -E`` commands are available only on Windows:
``write_regv <key> <value>`` ``write_regv <key> <value>``
Write Windows registry value. Write Windows registry value.
Find-Package Tool Mode
======================
CMake provides a helper for Makefile-based projects with the signature::
cmake --find-package <options>...
This runs in a pkg-config like mode.
Search a package using :command:`find_package()` and print the resulting flags
to stdout. This can be used to use cmake instead of pkg-config to find
installed libraries in plain Makefile-based projects or in autoconf-based
projects (via ``share/aclocal/cmake.m4``).
.. note::
This mode is not well-supported due to some technical limitations.
It is kept for compatibility but should not be used in new projects.
See Also See Also
======== ========

@ -65,7 +65,7 @@ Options
``-P <package name>`` ``-P <package name>``
override/define CPACK_PACKAGE_NAME override/define CPACK_PACKAGE_NAME
If the package name is not specified on cpack commmand line If the package name is not specified on cpack command line
thenCPack.cmake defines it as CMAKE_PROJECT_NAME thenCPack.cmake defines it as CMAKE_PROJECT_NAME
``-R <package version>`` ``-R <package version>``

@ -589,6 +589,17 @@ Configuration settings to specify the version control tool include:
* `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND` * `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND`
* :module:`CTest` module variable: ``GITCOMMAND`` * :module:`CTest` module variable: ``GITCOMMAND``
The source tree is updated by ``git fetch`` followed by
``git reset --hard`` to the ``FETCH_HEAD``. The result is the same
as ``git pull`` except that any local moficiations are overwritten.
Use ``GITUpdateCustom`` to specify a different approach.
``GITInitSubmodules``
If set, CTest will update the repository's submodules before updating.
* `CTest Script`_ variable: :variable:`CTEST_GIT_INIT_SUBMODULES`
* :module:`CTest` module variable: ``CTEST_GIT_INIT_SUBMODULES``
``GITUpdateCustom`` ``GITUpdateCustom``
Specify a custom command line (as a semicolon-separated list) to run Specify a custom command line (as a semicolon-separated list) to run
in the source tree (Git work tree) to update it instead of running in the source tree (Git work tree) to update it instead of running

@ -0,0 +1 @@
.. cmake-module:: ../../Modules/FindLTTngUST.cmake

@ -1,7 +1,7 @@
CMP0059 CMP0059
------- -------
Don't treat ``DEFINITIONS`` as a built-in directory property. Do not treat ``DEFINITIONS`` as a built-in directory property.
CMake 3.3 and above no longer make a list of definitions available through CMake 3.3 and above no longer make a list of definitions available through
the :prop_dir:`DEFINITIONS` directory property. The the :prop_dir:`DEFINITIONS` directory property. The

@ -17,8 +17,7 @@ This property will be initialized in each directory by its value in the
directory's parent. directory's parent.
CMake will automatically drop some definitions that are not supported CMake will automatically drop some definitions that are not supported
by the native build tool. The VS6 IDE does not support definition by the native build tool.
values with spaces (but NMake does).
.. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt .. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt

@ -13,7 +13,7 @@ directories for the compiler.
In addition to accepting values from that command, values may be set In addition to accepting values from that command, values may be set
directly on any directory using the :command:`set_property` command. A directly on any directory using the :command:`set_property` command. A
directory gets its initial value from its parent directory if it has one. directory gets its initial value from its parent directory if it has one.
The intial value of the :prop_tgt:`INCLUDE_DIRECTORIES` target property The initial value of the :prop_tgt:`INCLUDE_DIRECTORIES` target property
comes from the value of this property. Both directory and target property comes from the value of this property. Both directory and target property
values are adjusted by calls to the :command:`include_directories` command. values are adjusted by calls to the :command:`include_directories` command.

@ -5,5 +5,6 @@ The current stack of listfiles being processed.
This property is mainly useful when trying to debug errors in your This property is mainly useful when trying to debug errors in your
CMake scripts. It returns a list of what list files are currently CMake scripts. It returns a list of what list files are currently
being processed, in order. So if one listfile does an INCLUDE command being processed, in order. So if one listfile does an
then that is effectively pushing the included listfile onto the stack. :command:`include` command then that is effectively pushing the
included listfile onto the stack.

@ -0,0 +1,18 @@
VS_STARTUP_PROJECT
------------------
Specify the default startup project in a Visual Studio solution.
The :ref:`Visual Studio Generators` create a ``.sln`` file for each directory
whose ``CMakeLists.txt`` file calls the :command:`project` command. Set this
property in the same directory as a :command:`project` command call (e.g. in
the top-level ``CMakeLists.txt`` file) to specify the default startup project
for the correpsonding solution file.
The property must be set to the name of an existing target. This
will cause that project to be listed first in the generated solution
file causing Visual Studio to make it the startup project if the
solution has never been opened before.
If this property is not specified, then the ``ALL_BUILD`` project
will be the default.

@ -270,7 +270,7 @@ The features known to this version of CMake are:
.. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
``cxx_uniform_initialization`` ``cxx_uniform_initialization``
Uniform intialization, as defined in N2640_. Uniform initialization, as defined in N2640_.
.. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf .. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf

@ -1,9 +1,10 @@
FIND_LIBRARY_USE_LIB64_PATHS FIND_LIBRARY_USE_LIB64_PATHS
---------------------------- ----------------------------
Whether FIND_LIBRARY should automatically search lib64 directories. Whether :command:`find_library` should automatically search lib64
directories.
FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the
FIND_LIBRARY command should automatically search the lib64 variant of :command:`find_library` command should automatically search the lib64
directories called lib in the search path when building 64-bit variant of directories called lib in the search path when building
binaries. 64-bit binaries.

@ -1,9 +1,10 @@
FIND_LIBRARY_USE_OPENBSD_VERSIONING FIND_LIBRARY_USE_OPENBSD_VERSIONING
----------------------------------- -----------------------------------
Whether FIND_LIBRARY should find OpenBSD-style shared libraries. Whether :command:`find_library` should find OpenBSD-style shared
libraries.
This property is a boolean specifying whether the FIND_LIBRARY command This property is a boolean specifying whether the
should find shared libraries with OpenBSD-style versioned extension: :command:`find_library` command should find shared libraries with
".so.<major>.<minor>". The property is set to true on OpenBSD and OpenBSD-style versioned extension: ".so.<major>.<minor>". The
false on other platforms. property is set to true on OpenBSD and false on other platforms.

@ -3,4 +3,5 @@ IN_TRY_COMPILE
Read-only property that is true during a try-compile configuration. Read-only property that is true during a try-compile configuration.
True when building a project inside a TRY_COMPILE or TRY_RUN command. True when building a project inside a :command:`try_compile` or
:command:`try_run` command.

@ -5,5 +5,5 @@ Name of FOLDER for targets that are added automatically by CMake.
If not set, CMake uses "CMakePredefinedTargets" as a default value for If not set, CMake uses "CMakePredefinedTargets" as a default value for
this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be
organized into this FOLDER. See also the documentation for the FOLDER organized into this FOLDER. See also the documentation for the
target property. :prop_tgt:`FOLDER` target property.

@ -8,6 +8,6 @@ progress message describing what each build rule does. If the
property is not set the default is ON. Set the property to OFF to property is not set the default is ON. Set the property to OFF to
disable granular messages and report only as each target completes. disable granular messages and report only as each target completes.
This is intended to allow scripted builds to avoid the build time cost This is intended to allow scripted builds to avoid the build time cost
of detailed reports. If a CMAKE_RULE_MESSAGES cache entry exists its of detailed reports. If a ``CMAKE_RULE_MESSAGES`` cache entry exists
value initializes the value of this property. Non-Makefile generators its value initializes the value of this property. Non-Makefile
currently ignore this property. generators currently ignore this property.

@ -1,9 +1,10 @@
USE_FOLDERS USE_FOLDERS
----------- -----------
Use the FOLDER target property to organize targets into folders. Use the :prop_tgt:`FOLDER` target property to organize targets into
folders.
If not set, CMake treats this property as OFF by default. CMake If not set, CMake treats this property as OFF by default. CMake
generators that are capable of organizing into a hierarchy of folders generators that are capable of organizing into a hierarchy of folders
use the values of the FOLDER target property to name those folders. use the values of the :prop_tgt:`FOLDER` target property to name those
See also the documentation for the FOLDER target property. folders. See also the documentation for the FOLDER target property.

@ -13,8 +13,7 @@ the name COMPILE_DEFINITIONS_<CONFIG> where <CONFIG> is an upper-case
name (ex. "COMPILE_DEFINITIONS_DEBUG"). name (ex. "COMPILE_DEFINITIONS_DEBUG").
CMake will automatically drop some definitions that are not supported CMake will automatically drop some definitions that are not supported
by the native build tool. The VS6 IDE does not support definition by the native build tool. Xcode does not support per-configuration
values with spaces (but NMake does). Xcode does not support definitions on source files.
per-configuration definitions on source files.
.. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt .. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt

@ -4,5 +4,5 @@ COMPILE_FLAGS
Additional flags to be added when compiling this source file. Additional flags to be added when compiling this source file.
These flags will be added to the list of compile flags when this These flags will be added to the list of compile flags when this
source file builds. Use COMPILE_DEFINITIONS to pass additional source file builds. Use :prop_sf:`COMPILE_DEFINITIONS` to pass
preprocessor definitions. additional preprocessor definitions.

@ -3,5 +3,5 @@ ATTACHED_FILES_ON_FAIL
Attach a list of files to a dashboard submission if the test fails. Attach a list of files to a dashboard submission if the test fails.
Same as ATTACHED_FILES, but these files will only be included if the Same as :prop_test:`ATTACHED_FILES`, but these files will only be
test does not pass. included if the test does not pass.

@ -0,0 +1,37 @@
TIMEOUT_AFTER_MATCH
-------------------
Change a test's timeout duration after a matching line is encountered
in its output.
Usage
^^^^^
.. code-block:: cmake
add_test(mytest ...)
set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
Description
^^^^^^^^^^^
Allow a test ``seconds`` to complete after ``regex`` is encountered in
its output.
When the test outputs a line that matches ``regex`` its start time is
reset to the current time and its timeout duration is changed to
``seconds``. Prior to this, the timeout duration is determined by the
:prop_test:`TIMEOUT` property or the :variable:`CTEST_TEST_TIMEOUT`
variable if either of these are set.
:prop_test:`TIMEOUT_AFTER_MATCH` is useful for avoiding spurious
timeouts when your test must wait for some system resource to become
available before it can execute. Set :prop_test:`TIMEOUT` to a longer
duration that accounts for resource acquisition and use
:prop_test:`TIMEOUT_AFTER_MATCH` to control how long the actual test
is allowed to run.
If the required resource can be controlled by CTest you should use
:prop_test:`RESOURCE_LOCK` instead of :prop_test:`TIMEOUT_AFTER_MATCH`.
This property should be used when only the test itself can determine
when its required resources are available.

@ -6,22 +6,35 @@ Should the target be processed with automoc (for Qt projects).
AUTOMOC is a boolean specifying whether CMake will handle the Qt ``moc`` AUTOMOC is a boolean specifying whether CMake will handle the Qt ``moc``
preprocessor automatically, i.e. without having to use the preprocessor automatically, i.e. without having to use the
:module:`QT4_WRAP_CPP() <FindQt4>` or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are :module:`QT4_WRAP_CPP() <FindQt4>` or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are
supported. When this property is set ``ON``, CMake will scan the supported.
source files at build time and invoke moc accordingly. If an ``#include``
statement like ``#include "moc_foo.cpp"`` is found, the ``Q_OBJECT`` class When this property is set ``ON``, CMake will scan the
declaration is expected in the header, and ``moc`` is run on the header source files at build time and invoke moc accordingly.
file. If an ``#include`` statement like ``#include "foo.moc"`` is found, then
a ``Q_OBJECT`` is expected in the current source file and ``moc`` is run on * If an ``#include`` statement like ``#include "moc_foo.cpp"`` is found,
the file itself. Additionally, header files with the same base name (like the ``Q_OBJECT`` class declaration is expected in the header, and
``foo.h``) or ``_p`` appended to the base name (like ``foo_p.h``) are parsed ``moc`` is run on the header file. A ``moc_foo.cpp`` file will be
for ``Q_OBJECT`` macros, and if found, ``moc`` is also executed on those files. generated from the source's header into the
``AUTOMOC`` checks multiple header alternative extensions, such as :variable:`CMAKE_CURRENT_BINARY_DIR` directory. This allows the
``hpp``, ``hxx`` etc when searching for headers. compiler to find the included ``moc_foo.cpp`` file regardless of the
The resulting moc files, which are not included as shown above in any location the original source. However, if multiple source files
of the source files are included in a generated in different directories do this then their generated moc files would
``<targetname>_automoc.cpp`` file, which is compiled as part of the collide. In this case a diagnostic will be issued.
target. This property is initialized by the value of the
:variable:`CMAKE_AUTOMOC` variable if it is set when a target is created. * If an ``#include`` statement like ``#include "foo.moc"`` is found,
then a ``Q_OBJECT`` is expected in the current source file and ``moc``
is run on the file itself. Additionally, header files with the same
base name (like ``foo.h``) or ``_p`` appended to the base name (like
``foo_p.h``) are parsed for ``Q_OBJECT`` macros, and if found, ``moc``
is also executed on those files. ``AUTOMOC`` checks multiple header
alternative extensions, such as ``hpp``, ``hxx`` etc when searching
for headers. The resulting moc files, which are not included as shown
above in any of the source files are included in a generated
``<targetname>_automoc.cpp`` file, which is compiled as part of the
target.
This property is initialized by the value of the :variable:`CMAKE_AUTOMOC`
variable if it is set when a target is created.
Additional command line options for moc can be set via the Additional command line options for moc can be set via the
:prop_tgt:`AUTOMOC_MOC_OPTIONS` property. :prop_tgt:`AUTOMOC_MOC_OPTIONS` property.

@ -11,8 +11,7 @@ automatically escape the value correctly for the native build system
values). values).
CMake will automatically drop some definitions that are not supported CMake will automatically drop some definitions that are not supported
by the native build tool. The VS6 IDE does not support definition by the native build tool.
values with spaces (but NMake does).
.. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt .. include:: /include/COMPILE_DEFINITIONS_DISCLAIMER.txt

@ -3,9 +3,9 @@ COMPILE_FLAGS
Additional flags to use when compiling this target's sources. Additional flags to use when compiling this target's sources.
The COMPILE_FLAGS property sets additional compiler flags used to The ``COMPILE_FLAGS`` property sets additional compiler flags used to
build sources within the target. Use COMPILE_DEFINITIONS to pass build sources within the target. Use :prop_tgt:`COMPILE_DEFINITIONS`
additional preprocessor definitions. to pass additional preprocessor definitions.
This property is deprecated. Use the COMPILE_OPTIONS property or the This property is deprecated. Use the :prop_tgt:`COMPILE_OPTIONS`
target_compile_options command instead. property or the command:`target_compile_options` command instead.

@ -7,7 +7,7 @@ This property holds a :ref:`;-list <CMake Language Lists>` of options
specified so far for its target. Use the :command:`target_compile_options` specified so far for its target. Use the :command:`target_compile_options`
command to append more options. command to append more options.
This property is intialized by the :prop_dir:`COMPILE_OPTIONS` directory This property is initialized by the :prop_dir:`COMPILE_OPTIONS` directory
property when a target is created, and is used by the generators to set property when a target is created, and is used by the generators to set
the options for the compiler. the options for the compiler.

@ -3,6 +3,3 @@
``/Fd`` compiler flag and are not the same as linker-generated ``/Fd`` compiler flag and are not the same as linker-generated
program database files specified by the ``/pdb`` linker flag. program database files specified by the ``/pdb`` linker flag.
Use the |PDB_XXX| property to specify the latter. Use the |PDB_XXX| property to specify the latter.
This property is not implemented by the :generator:`Visual Studio 6`
generator.

@ -1,6 +1,7 @@
CROSSCOMPILING_EMULATOR CROSSCOMPILING_EMULATOR
----------------------- -----------------------
Use the given emulator to run executables created when crosscompiling. This Use the given emulator to run executables created when crosscompiling.
command will be added as a prefix to :command:`add_test` test commands for This command will be added as a prefix to :command:`add_test`,
built target system executables. :command:`add_custom_command`, and :command:`add_custom_target` commands
for built target system executables.

@ -6,7 +6,8 @@ Boolean specifying whether compiler specific extensions are requested.
This property specifies whether compiler specific extensions should be This property specifies whether compiler specific extensions should be
used. For some compilers, this results in adding a flag such used. For some compilers, this results in adding a flag such
as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line. This as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line. This
property is ``ON`` by default. property is ``ON`` by default. The basic C++ standard level is
controlled by the :prop_tgt:`CXX_STANDARD` target property.
See the :manual:`cmake-compile-features(7)` manual for information on See the :manual:`cmake-compile-features(7)` manual for information on
compile features and a list of supported compilers. compile features and a list of supported compilers.

@ -22,6 +22,8 @@ with a compiler which does not support ``-std=gnu++11`` or an equivalent
flag will not result in an error or warning, but will instead add the flag will not result in an error or warning, but will instead add the
``-std=gnu++98`` flag if supported. This "decay" behavior may be controlled ``-std=gnu++98`` flag if supported. This "decay" behavior may be controlled
with the :prop_tgt:`CXX_STANDARD_REQUIRED` target property. with the :prop_tgt:`CXX_STANDARD_REQUIRED` target property.
Additionally, the :prop_tgt:`CXX_EXTENSIONS` target property may be used to
control whether compiler-specific extensions are enabled on a per-target basis.
See the :manual:`cmake-compile-features(7)` manual for information on See the :manual:`cmake-compile-features(7)` manual for information on
compile features and a list of supported compilers. compile features and a list of supported compilers.

@ -6,7 +6,8 @@ Boolean specifying whether compiler specific extensions are requested.
This property specifies whether compiler specific extensions should be This property specifies whether compiler specific extensions should be
used. For some compilers, this results in adding a flag such used. For some compilers, this results in adding a flag such
as ``-std=gnu11`` instead of ``-std=c11`` to the compile line. This as ``-std=gnu11`` instead of ``-std=c11`` to the compile line. This
property is ``ON`` by default. property is ``ON`` by default. The basic C standard level is
controlled by the :prop_tgt:`C_STANDARD` target property.
See the :manual:`cmake-compile-features(7)` manual for information on See the :manual:`cmake-compile-features(7)` manual for information on
compile features and a list of supported compilers. compile features and a list of supported compilers.

@ -22,6 +22,8 @@ with a compiler which does not support ``-std=gnu11`` or an equivalent
flag will not result in an error or warning, but will instead add the flag will not result in an error or warning, but will instead add the
``-std=gnu99`` or ``-std=gnu90`` flag if supported. This "decay" behavior may ``-std=gnu99`` or ``-std=gnu90`` flag if supported. This "decay" behavior may
be controlled with the :prop_tgt:`C_STANDARD_REQUIRED` target property. be controlled with the :prop_tgt:`C_STANDARD_REQUIRED` target property.
Additionally, the :prop_tgt:`C_EXTENSIONS` target property may be used to
control whether compiler-specific extensions are enabled on a per-target basis.
See the :manual:`cmake-compile-features(7)` manual for information on See the :manual:`cmake-compile-features(7)` manual for information on
compile features and a list of supported compilers. compile features and a list of supported compilers.

@ -0,0 +1,18 @@
DEPLOYMENT_REMOTE_DIRECTORY
---------------------------
Set the WinCE project ``RemoteDirectory`` in ``DeploymentTool`` and
``RemoteExecutable`` in ``DebuggerTool`` in ``.vcproj`` files generated
by the :generator:`Visual Studio 9 2008` and :generator:`Visual Studio 8 2005`
generators. This is useful when you want to debug on remote WinCE device.
For example:
.. code-block:: cmake
set_property(TARGET ${TARGET} PROPERTY
DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
produces::
<DeploymentTool RemoteDirectory="\FlashStorage" ... />
<DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />

@ -26,6 +26,10 @@ Example of creation ``dynamicFramework``:
FRAMEWORK_VERSION C FRAMEWORK_VERSION C
MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
MACOSX_FRAMEWORK_INFO_PLIST Info.plist MACOSX_FRAMEWORK_INFO_PLIST Info.plist
# "current version" in semantic format in Mach-O binary file
VERSION 16.4.0
# "compatibility version" in semantic format in Mach-O binary file
SOVERSION 1.0.0
PUBLIC_HEADER dynamicFramework.h PUBLIC_HEADER dynamicFramework.h
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
) )

@ -5,7 +5,7 @@ Ninja only: Pool used for linking.
The number of parallel link processes could be limited by defining The number of parallel link processes could be limited by defining
pools with the global :prop_gbl:`JOB_POOLS` pools with the global :prop_gbl:`JOB_POOLS`
property and then specifing here the pool name. property and then specifying here the pool name.
For instance: For instance:

@ -0,0 +1,13 @@
<LANG>_CLANG_TIDY
-----------------
This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``.
Specify a :ref:`;-list <CMake Language Lists>` containing a command
line for the ``clang-tidy`` tool. The :ref:`Makefile Generators`
and the :generator:`Ninja` generator will run this tool along with the
compiler and report a warning if the tool reports any problems.
This property is initialized by the value of
the :variable:`CMAKE_<LANG>_CLANG_TIDY` variable if it is set
when a target is created.

@ -7,6 +7,3 @@
``/pdb`` linker flag and are not the same as compiler-generated ``/pdb`` linker flag and are not the same as compiler-generated
program database files specified by the ``/Fd`` compiler flag. program database files specified by the ``/Fd`` compiler flag.
Use the |COMPILE_PDB_XXX| property to specify the latter. Use the |COMPILE_PDB_XXX| property to specify the latter.
This property is not implemented by the :generator:`Visual Studio 6`
generator.

@ -3,12 +3,25 @@ SOVERSION
What version number is this target. What version number is this target.
For shared libraries VERSION and SOVERSION can be used to specify the For shared libraries :prop_tgt:`VERSION` and ``SOVERSION`` can be used to
build version and API version respectively. When building or specify the build version and API version respectively. When building or
installing appropriate symlinks are created if the platform supports installing appropriate symlinks are created if the platform supports
symlinks and the linker supports so-names. If only one of both is symlinks and the linker supports so-names. If only one of both is
specified the missing is assumed to have the same version number. specified the missing is assumed to have the same version number.
SOVERSION is ignored if NO_SONAME property is set. For shared ``SOVERSION`` is ignored if :prop_tgt:`NO_SONAME` property is set.
libraries and executables on Windows the VERSION attribute is parsed
to extract a "major.minor" version number. These numbers are used as Windows Versions
the image version of the binary. ^^^^^^^^^^^^^^^^
For shared libraries and executables on Windows the :prop_tgt:`VERSION`
attribute is parsed to extract a ``<major>.<minor>`` version number.
These numbers are used as the image version of the binary.
Mach-O Versions
^^^^^^^^^^^^^^^
For shared libraries and executables on Mach-O systems (e.g. OS X, iOS),
the ``SOVERSION`` property corresponds to *compatibility version* and
:prop_tgt:`VERSION` to *current version*. See the :prop_tgt:`FRAMEWORK` target
property for an example. Versions of Mach-O binaries may be checked with the
``otool -L <binary>`` command.

@ -3,14 +3,27 @@ VERSION
What version number is this target. What version number is this target.
For shared libraries VERSION and SOVERSION can be used to specify the For shared libraries ``VERSION`` and :prop_tgt:`SOVERSION` can be used
build version and API version respectively. When building or to specify the build version and API version respectively. When building or
installing appropriate symlinks are created if the platform supports installing appropriate symlinks are created if the platform supports
symlinks and the linker supports so-names. If only one of both is symlinks and the linker supports so-names. If only one of both is
specified the missing is assumed to have the same version number. For specified the missing is assumed to have the same version number. For
executables VERSION can be used to specify the build version. When executables ``VERSION`` can be used to specify the build version. When
building or installing appropriate symlinks are created if the building or installing appropriate symlinks are created if the
platform supports symlinks. For shared libraries and executables on platform supports symlinks.
Windows the VERSION attribute is parsed to extract a "major.minor"
version number. These numbers are used as the image version of the Windows Versions
binary. ^^^^^^^^^^^^^^^^
For shared libraries and executables on Windows the ``VERSION``
attribute is parsed to extract a ``<major>.<minor>`` version number.
These numbers are used as the image version of the binary.
Mach-O Versions
^^^^^^^^^^^^^^^
For shared libraries and executables on Mach-O systems (e.g. OS X, iOS),
the :prop_tgt:`SOVERSION` property correspond to *compatibility version* and
``VERSION`` to *current version*. See the :prop_tgt:`FRAMEWORK` target
property for an example. Versions of Mach-O binaries may be checked with the
``otool -L <binary>`` command.

@ -0,0 +1,10 @@
VS_CONFIGURATION_TYPE
---------------------
Visual Studio project configuration type.
Sets the ``ConfigurationType`` attribute for a generated Visual Studio project.
If this property is set, it overrides the default setting that is based on the
target type (e.g. ``StaticLibrary``, ``Application``, ...).
Supported on :ref:`Visual Studio Generators` for VS 2010 and higher.

@ -0,0 +1,310 @@
CMake 3.6 Release Notes
***********************
.. only:: html
.. contents::
Changes made since CMake 3.5 include the following.
New Features
============
Generators
----------
* The :generator:`Ninja` generator learned to produce phony targets
of the form ``sub/dir/all`` to drive the build of a subdirectory.
This is equivalent to ``cd sub/dir; make all`` with
:ref:`Makefile Generators`.
* The :generator:`Ninja` generator now includes system header files in build
dependencies to ensure correct re-builds when system packages are updated.
* The :generator:`Visual Studio 14 2015` generator learned to support the
Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.
This feature is experimental.
Commands
--------
* The :command:`add_custom_command` and :command:`add_custom_target` commands
learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
target property.
* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
to leave installation rules out of the default installation.
* The :command:`list` command gained a ``FILTER`` sub-command to filter
list elements by regular expression.
* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
commands gained support for the ``%s`` placeholder. This is
the number of seconds since the UNIX Epoch.
Variables
---------
* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced
to tell :ref:`Makefile Generators` to limit dependency scanning only
to files in the project source and build trees.
* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
indicate when CMake is running on an Oracle Solaris host.
* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
added for use by toolchain files to specify system include directories
to be appended to all compiler command lines.
* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
It is intended for use by toolchain files to specify system libraries to be
added to all linker command lines.
* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced
to tell the :generator:`Ninja` generator to configure the generated
``build.ninja`` file for use as a ``subninja``.
* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
added for use by toolchain files to specify platform-specific
variables that must be propagated by the :command:`try_compile`
command into test projects.
* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added
to optionally tell the :command:`try_compile` command to build
a static library instead of an executable. This is useful for
cross-compiling toolchains that cannot link binaries without
custom flags or scripts.
Properties
----------
* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced
to tell the :generator:`Visual Studio 9 2008` and
:generator:`Visual Studio 8 2005` generators to generate the "remote
directory" for WinCE project deployment and debugger settings.
* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
:variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
:ref:`Makefile Generators` and the :generator:`Ninja` generator to run
``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.
* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to
optionally tell CTest to enforce a secondary timeout after matching
certain output from a test.
* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced
to specify a custom project file type for :ref:`Visual Studio Generators`
supporting VS 2010 and above.
* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced
to specify for :ref:`Visual Studio Generators` the default startup
project for generated solutions (``.sln`` files).
Modules
-------
* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.
* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
option to perform a shallow clone of a Git repository.
* The :module:`ExternalProject` module learned to initialize Git submodules
recursively and also to initialize new submodules on updates. Use the
``GIT_SUBMODULES`` option to restrict which submodules are initalized and
updated.
* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
argument to skip extracting the file that is downloaded (e.g., for
self-extracting shell installers or ``.msi`` files).
* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
from git repositories.
* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
support `OpenBLAS <http://www.openblas.net>`__.
* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.
* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
CMake to automatically re-run when test sources change so that they
can be re-scanned.
* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
library.
* The :module:`FindPkgConfig` module learned to optionally create imported
targets for the libraries it has found.
* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
variable and check the version number requested in a :command:`find_package`
call.
* The :module:`InstallRequiredSystemLibraries` module learned a new
``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
of the Windows Universal CRT libraries with Visual Studio 2015.
Platforms
---------
* The Clang compiler is now supported on CYGWIN.
* Support was added for the Bruce C Compiler with compiler id ``Bruce``.
CTest
-----
* The :command:`ctest_update` command now looks at the
:variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
submodules should be updated or not before updating.
* The :command:`ctest_update` command will now synchronize submodules on an
update. Updates which add submodules or change a submodule's URL will now be
pulled properly.
CPack
-----
* The :module:`CPackDeb` module learned how to handle ``$ORIGIN``
in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
is used for dependency auto detection.
* The :module:`CPackDeb` module learned how to generate ``DEBIAN/shlibs``
contorl file when package contains shared libraries.
* The :module:`CPackDeb` module learned how to generate ``DEBIAN/postinst`` and
``DEBIAN/postrm`` files if the package installs libraries in
ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
* The :module:`CPackDeb` module learned how to generate dependencies between
Debian packages if multi-component setup is used and
:variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
For backward compatibility this feature is disabled by default.
See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.
* The :module:`CPackDeb` module learned how to set custom package file names
including how to generate properly-named Debian packages::
<PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
For backward compatibility this feature is disabled by default. See
:variable:`CPACK_DEBIAN_FILE_NAME` and
:variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
* The :module:`CPackDeb` module learned how to set the package release number
(``DebianRevisionNumber`` in package file name when used in combination with
``DEB-DEFAULT`` value set by :variable:`CPACK_DEBIAN_FILE_NAME`). See
:variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
* The :module:`CPackDeb` module learned how to set the package architecture
per-component. See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
* The :module:`CPackDMG` module learned a new option to tell the CPack
``DragNDrop`` generaor to skip the ``/Applications`` symlink.
See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.
* The :module:`CPackIFW` module gained a new
:command:`cpack_ifw_update_repository` command to update a QtIFW-specific
repository from a remote repository.
* The :module:`CPackRPM` module learned how to set RPM ``dist`` tag as part of
RPM ``Release:`` tag when enabled (mandatory on some Linux distributions for
e.g. on Fedora).
See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
* The :module:`CPackRPM` module learned how to set default values for owning
user/group and file/directory permissions of package content.
See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
:variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
:variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
counterparts.
* The :module:`CPackRPM` module learned how to set user defined package file
names, how to specify that rpmbuild should decide on file name format as
well as handling of multiple rpm packages generated by a single user defined
spec file.
See :variable:`CPACK_RPM_PACKAGE_NAME` and
:variable:`CPACK_RPM_<component>_PACKAGE_NAME`.
* The :module:`CPackRPM` module learned how to correctly handle symlinks
that are pointing outside generated packages.
Other
-----
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
is now aware of features supported by Intel C++ compilers versions 12.1
through 16.0 on UNIX platforms.
Deprecated and Removed Features
===============================
* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
See module documentation for an explanation.
* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
commands no longer search in installation prefixes derived from the ``PATH``
environment variable on non-Windows platforms. This behavior was added in
CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
their tools do not necessarily want any supporting ``<prefix>/lib``
directories searched. One may set the ``CMAKE_PREFIX_PATH`` environment
variable with a :ref:`;-list <CMake Language Lists>` of prefixes that are
to be searched.
* The :generator:`Visual Studio 7 .NET 2003` generator is now
deprecated and will be removed in a future version of CMake.
* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
removed. It had been deprecated since CMake 3.3.
* The :generator:`Visual Studio 6` generator has been removed.
It had been deprecated since CMake 3.3.
Other Changes
=============
* The precompiled OS X binary provided on ``cmake.org`` now requires
OS X 10.7 or newer.
* On Linux and FreeBSD platforms, when building CMake itself from source and
not using a system-provided libcurl, OpenSSL is now used by default if it is
found on the system. This enables SSL/TLS support for commands supporting
network communication via ``https``, such as :command:`file(DOWNLOAD)`,
:command:`file(UPLOAD)`, and :command:`ctest_submit`.
* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
``--target`` options with an error instead of silently ignoring all but the
last one.
* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
files in different directories use ``#include <moc_foo.cpp>`` with the
same name (because the generated ``moc_foo.cpp`` files would collide).
* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
special characters by passing the ``VERBATIM`` option to internal
:command:`add_custom_command` calls. This may break clients that
added escaping manually to work around the bug.
* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
special characters by passing the ``VERBATIM`` option to internal
:command:`add_custom_command` calls. This may break clients that
added escaping manually to work around the bug.
* The :module:`FindProtobuf` module input and output variables were all renamed
from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
Input variables of the old case will be honored if provided, and output
variables of the old case are always provided.
* The :module:`CPackRPM` module now supports upper cased component
names in per component CPackRPM specific variables.
E.g. component named ``foo`` now expects component specific
variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
Upper cased component name part in variables is compatible
with convention used for other CPack variables.
For back compatibility old format of variables is still valid
and preferred if both versions of variable are set, but the
preferred future use is upper cased component names in variables.
New variables that will be added to CPackRPM in later versions
will only support upper cased component variable format.

@ -11,6 +11,7 @@ Releases
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
3.6 <3.6>
3.5 <3.5> 3.5 <3.5>
3.4 <3.4> 3.4 <3.4>
3.3 <3.3> 3.3 <3.3>

@ -12,7 +12,6 @@ Example values:
:: ::
$(IntDir) = Visual Studio 6
$(ConfigurationName) = Visual Studio 7, 8, 9 $(ConfigurationName) = Visual Studio 7, 8, 9
$(Configuration) = Visual Studio 10 $(Configuration) = Visual Studio 10
$(CONFIGURATION) = Xcode $(CONFIGURATION) = Xcode

@ -0,0 +1,10 @@
CMAKE_DEPENDS_IN_PROJECT_ONLY
-----------------------------
When set to ``TRUE`` in a directory, the build system produced by the
:ref:`Makefile Generators` is set up to only consider dependencies on source
files that appear either in the source or in the binary directories. Changes
to source files outside of these directories will not cause rebuilds.
This should be used carefully in cases where some source files are picked up
through external headers during the build.

@ -0,0 +1,10 @@
CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
---------------------------------------
This cache variable is used by the Eclipse project generator. See
:manual:`cmake-generators(7)`.
The Eclipse project generator generates so-called linked resources
e.g. to the subproject root dirs in the source tree or to the source files
of targets.
This can be disabled by setting this variable to FALSE.

@ -0,0 +1,11 @@
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
-------------------------------------
This cache variable is used by the Eclipse project generator. See
:manual:`cmake-generators(7)`.
If this variable is set to TRUE, the Eclipse project generator will generate
an Eclipse project in :variable:`CMAKE_SOURCE_DIR` . This project can then
be used in Eclipse e.g. for the version control functionality.
:variable:`CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT` defaults to FALSE; so
nothing is written into the source directory.

@ -0,0 +1,9 @@
CMAKE_ECLIPSE_MAKE_ARGUMENTS
----------------------------
This cache variable is used by the Eclipse project generator. See
:manual:`cmake-generators(7)`.
This variable holds arguments which are used when Eclipse invokes the make
tool. By default it is initialized to hold flags to enable parallel builds
(using -j typically).

@ -0,0 +1,10 @@
CMAKE_ECLIPSE_VERSION
---------------------
This cache variable is used by the Eclipse project generator. See
:manual:`cmake-generators(7)`.
When using the Eclipse project generator, CMake tries to find the Eclipse
executable and detect the version of it. Depending on the version it finds,
some features are enabled or disabled. If CMake doesn't find
Eclipse, it assumes the oldest supported version, Eclipse Callisto (3.2).

@ -4,4 +4,4 @@ CMAKE_GENERATOR
The generator used to build the project. See :manual:`cmake-generators(7)`. The generator used to build the project. See :manual:`cmake-generators(7)`.
The name of the generator that is being used to generate the build The name of the generator that is being used to generate the build
files. (e.g. ``Unix Makefiles``, ``Visual Studio 6``, etc.) files. (e.g. ``Unix Makefiles``, ``Ninja``, etc.)

@ -0,0 +1,6 @@
CMAKE_HOST_SOLARIS
------------------
``True`` for Oracle Solaris operating systems.
Set to ``true`` when the host system is Oracle Solaris.

@ -0,0 +1,6 @@
CMAKE_<LANG>_CLANG_TIDY
-----------------------
Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property.
This variable is used to initialize the property on each target as it is
created. This is done only when ``<LANG>`` is ``C`` or ``CXX``.

@ -3,7 +3,7 @@ CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
The external toolchain for cross-compiling, if supported. The external toolchain for cross-compiling, if supported.
Some compiler toolchains do not ship their own auxilliary utilities such as Some compiler toolchains do not ship their own auxiliary utilities such as
archivers and linkers. The compiler driver may support a command-line argument archivers and linkers. The compiler driver may support a command-line argument
to specify the location of such tools. to specify the location of such tools.
``CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN`` may be set to a path to a path to ``CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN`` may be set to a path to a path to

@ -12,6 +12,7 @@ include:
ADSP = Analog VisualDSP++ (analog.com) ADSP = Analog VisualDSP++ (analog.com)
AppleClang = Apple Clang (apple.com) AppleClang = Apple Clang (apple.com)
ARMCC = ARM Compiler (arm.com) ARMCC = ARM Compiler (arm.com)
Bruce = Bruce C Compiler
CCur = Concurrent Fortran (ccur.com) CCur = Concurrent Fortran (ccur.com)
Clang = LLVM Clang (clang.llvm.org) Clang = LLVM Clang (clang.llvm.org)
Cray = Cray Compiler (cray.com) Cray = Cray Compiler (cray.com)

@ -0,0 +1,14 @@
CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
-----------------------------------------
Include directories to be used for every source file compiled with
the ``<LANG>`` compiler. This is meant for specification of system
include directories needed by the language for the current platform.
The directories always appear at the end of the include path passed
to the compiler.
This variable should not be set by project code. It is meant to be set by
CMake's platform information modules for the current toolchain, or by a
toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
See also :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES`.

@ -0,0 +1,12 @@
CMAKE_<LANG>_STANDARD_LIBRARIES
-------------------------------
Libraries linked into every executable and shared library linked
for language ``<LANG>``. This is meant for specification of system
libraries needed by the language for the current platform.
This variable should not be set by project code. It is meant to be set by
CMake's platform information modules for the current toolchain, or by a
toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
See also :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES`.

@ -34,12 +34,11 @@ to configure the project:
the CMake cache then CMake will use the specified value. the CMake cache then CMake will use the specified value.
* The :ref:`Visual Studio Generators` set this to the full path to * The :ref:`Visual Studio Generators` set this to the full path to
``MSBuild.exe`` (VS >= 10), ``devenv.com`` (VS 7,8,9), ``MSBuild.exe`` (VS >= 10), ``devenv.com`` (VS 7,8,9), or
``VCExpress.exe`` (VS Express 8,9), or ``msdev.exe`` (VS 6). ``VCExpress.exe`` (VS Express 8,9).
(See also variables (See also variables
:variable:`CMAKE_VS_MSBUILD_COMMAND`, :variable:`CMAKE_VS_MSBUILD_COMMAND` and
:variable:`CMAKE_VS_DEVENV_COMMAND`, and :variable:`CMAKE_VS_DEVENV_COMMAND`.
:variable:`CMAKE_VS_MSDEV_COMMAND`.)
These generators prefer to lookup the build tool at build time These generators prefer to lookup the build tool at build time
rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache

@ -5,7 +5,7 @@ Tell cmake to use MFC for an executable or dll.
This can be set in a ``CMakeLists.txt`` file and will enable MFC in the This can be set in a ``CMakeLists.txt`` file and will enable MFC in the
application. It should be set to ``1`` for the static MFC library, and ``2`` application. It should be set to ``1`` for the static MFC library, and ``2``
for the shared MFC library. This is used in Visual Studio 6 and 7 for the shared MFC library. This is used in Visual Studio 7
project files. The CMakeSetup dialog used MFC and the ``CMakeLists.txt`` project files. The CMakeSetup dialog used MFC and the ``CMakeLists.txt``
looks like this: looks like this:

@ -0,0 +1,27 @@
CMAKE_NINJA_OUTPUT_PATH_PREFIX
------------------------------
Set output files path prefix for the :generator:`Ninja` generator.
Every output files listed in the generated ``build.ninja`` will be
prefixed by the contents of this variable (a trailing slash is
appended if missing). This is useful when the generated ninja file is
meant to be embedded as a ``subninja`` file into a *super* ninja
project. For example, a ninja build file generated with a command
like::
cd top-build-dir/sub &&
cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
can be embedded in ``top-build-dir/build.ninja`` with a directive like
this::
subninja sub/build.ninja
The ``auto-regeneration`` rule in ``top-build-dir/build.ninja`` must have an
order-only dependency on ``sub/build.ninja``.
.. note::
When ``CMAKE_NINJA_OUTPUT_PATH_PREFIX`` is set, the project generated
by CMake cannot be used as a standalone project. No default targets
are specified.

@ -1,7 +0,0 @@
CMAKE_STANDARD_LIBRARIES
------------------------
Libraries linked into every executable and shared library.
This is the list of libraries that are linked into all executables and
libraries.

@ -0,0 +1,26 @@
CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
------------------------------------
List of variables that the :command:`try_compile` command source file signature
must propagate into the test project in order to target the same platform as
the host project.
This variable should not be set by project code. It is meant to be set by
CMake's platform information modules for the current toolchain, or by a
toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
Variables meaningful to CMake, such as :variable:`CMAKE_<LANG>_FLAGS`, are
propagated automatically. The ``CMAKE_TRY_COMPILE_PLATFORM_VARIABLES``
variable may be set to pass custom variables meaningful to a toolchain file.
For example, a toolchain file may contain:
.. code-block:: cmake
set(CMAKE_SYSTEM_NAME ...)
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
# ... use MY_CUSTOM_VARIABLE ...
If a user passes ``-DMY_CUSTOM_VARIABLE=SomeValue`` to CMake then this
setting will be made visible to the toolchain file both for the main
project and for test projects generated by the :command:`try_compile`
command source file signature.

@ -0,0 +1,15 @@
CMAKE_TRY_COMPILE_TARGET_TYPE
-----------------------------
Type of target generated for :command:`try_compile` calls using the
source file signature. Valid values are:
``EXECUTABLE``
Use :command:`add_executable` to name the source file in the
generated project. This is the default if no value is given.
``STATIC_LIBRARY``
Use :command:`add_library` with the ``STATIC`` option to name the
source file in the generated project. This avoids running the
linker and is intended for use with cross-compiling toolchains
that cannot link without custom flags or linker scripts.

@ -1,10 +0,0 @@
CMAKE_VS_MSDEV_COMMAND
----------------------
The :generator:`Visual Studio 6` generator sets this variable to the
``msdev.exe`` command installed with Visual Studio 6.
This variable is not defined by other generators even if ``msdev.exe``
is installed on the computer.
See also the :variable:`CMAKE_MAKE_PROGRAM` variable.

@ -54,7 +54,7 @@ program requires some named arguments.
file format to write output in: xml or html file format to write output in: xml or html
The rest of the supplied arguments consist of the full paths to the The rest of the supplied arguments consist of the full paths to the
``/src/main/java`` directories of each module within the souce tree. These ``/src/main/java`` directories of each module within the source tree. These
directories are needed and should not be forgotten. directories are needed and should not be forgotten.
.. _`Cobertura`: http://cobertura.github.io/cobertura/ .. _`Cobertura`: http://cobertura.github.io/cobertura/

@ -0,0 +1,5 @@
CTEST_GIT_INIT_SUBMODULES
-------------------------
Specify the CTest ``GITInitSubmodules`` setting
in a :manual:`ctest(1)` dashboard client script.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save