summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
Diffstat (limited to 'Help')
-rw-r--r--Help/command/add_custom_command.rst7
-rw-r--r--Help/command/cmake_parse_arguments.rst11
-rw-r--r--Help/command/find_package.rst17
-rw-r--r--Help/command/get_cmake_property.rst11
-rw-r--r--Help/command/if.rst59
-rw-r--r--Help/command/string.rst6
-rw-r--r--Help/generator/Ninja.rst17
-rw-r--r--Help/generator/Visual Studio 15.rst16
-rw-r--r--Help/manual/cmake-generator-expressions.7.rst8
-rw-r--r--Help/manual/cmake-generators.7.rst1
-rw-r--r--Help/manual/cmake-toolchains.7.rst204
-rw-r--r--Help/manual/cmake-variables.7.rst10
-rw-r--r--Help/manual/cmake.1.rst37
-rw-r--r--Help/prop_tgt/ANDROID_API.rst9
-rw-r--r--Help/prop_tgt/ANDROID_ARCH.rst3
-rw-r--r--Help/prop_tgt/ANDROID_GUI.rst4
-rw-r--r--Help/prop_tgt/ANDROID_STL_TYPE.rst32
-rw-r--r--Help/prop_tgt/AUTORCC.rst5
-rw-r--r--Help/prop_tgt/BUNDLE_EXTENSION.rst7
-rw-r--r--Help/release/3.6.rst6
-rw-r--r--Help/release/dev/GNUInstallDirs-function.rst5
-rw-r--r--Help/release/dev/add-extra-boolean-comparisons.rst6
-rw-r--r--Help/release/dev/android-platform-modules.rst5
-rw-r--r--Help/release/dev/app-framework-bundle-extension.rst5
-rw-r--r--Help/release/dev/ccmake-vim-navigation.rst4
-rw-r--r--Help/release/dev/cmake-capabilities.rst6
-rw-r--r--Help/release/dev/cpack-deb-long-filenames.rst6
-rw-r--r--Help/release/dev/cpack-deb-package-description-fallback.rst15
-rw-r--r--Help/release/dev/cpack-rpm-debuginfo-pkg.rst6
-rw-r--r--Help/release/dev/drop-linux-i386-binary.rst5
-rw-r--r--Help/release/dev/ninja-add_custom_command-depfile.rst6
-rw-r--r--Help/release/dev/ninja-directory-targets.rst8
-rw-r--r--Help/release/dev/parse_arguments_argv_n.rst6
-rw-r--r--Help/release/dev/vim-cmake-syntax.rst11
-rw-r--r--Help/release/dev/vs-15-generator.rst4
-rw-r--r--Help/release/dev/wix-custom-install-dir.rst7
-rw-r--r--Help/release/dev/wix-disabled-components.rst6
-rw-r--r--Help/release/dev/wix-root-description.rst7
-rw-r--r--Help/variable/ANDROID.rst5
-rw-r--r--Help/variable/CMAKE_ANDROID_API.rst10
-rw-r--r--Help/variable/CMAKE_ANDROID_ARCH.rst18
-rw-r--r--Help/variable/CMAKE_ANDROID_ARCH_ABI.rst17
-rw-r--r--Help/variable/CMAKE_ANDROID_ARM_MODE.rst7
-rw-r--r--Help/variable/CMAKE_ANDROID_ARM_NEON.rst6
-rw-r--r--Help/variable/CMAKE_ANDROID_NDK.rst7
-rw-r--r--Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst13
-rw-r--r--Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst6
-rw-r--r--Help/variable/CMAKE_ANDROID_STL_TYPE.rst35
-rw-r--r--Help/variable/CMAKE_INSTALL_PREFIX.rst2
-rw-r--r--Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst11
-rw-r--r--Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst7
-rw-r--r--Help/variable/CMAKE_VERSION.rst10
-rw-r--r--Help/variable/MSVC10.rst5
-rw-r--r--Help/variable/MSVC11.rst5
-rw-r--r--Help/variable/MSVC12.rst5
-rw-r--r--Help/variable/MSVC14.rst5
-rw-r--r--Help/variable/MSVC80.rst5
-rw-r--r--Help/variable/MSVC90.rst5
-rw-r--r--Help/variable/MSVC_VERSION.rst2
-rw-r--r--Help/variable/XCODE.rst4
60 files changed, 690 insertions, 88 deletions
diff --git a/Help/command/add_custom_command.rst b/Help/command/add_custom_command.rst
index d421364..4ab4298 100644
--- a/Help/command/add_custom_command.rst
+++ b/Help/command/add_custom_command.rst
@@ -20,6 +20,7 @@ The first signature is for adding a custom command to produce an output::
[<lang2> depend2] ...]
[WORKING_DIRECTORY dir]
[COMMENT comment]
+ [DEPFILE depfile]
[VERBATIM] [APPEND] [USES_TERMINAL])
This defines a command to generate specified ``OUTPUT`` file(s).
@@ -170,6 +171,12 @@ The options are:
If it is a relative path it will be interpreted relative to the
build tree directory corresponding to the current source directory.
+``DEPFILE``
+ Specify a ``.d`` depfile for the :generator:`Ninja` generator.
+ A ``.d`` file holds dependencies usually emitted by the custom
+ command itself.
+ Using ``DEPFILE`` with other generators than Ninja is an error.
+
Build Events
^^^^^^^^^^^^
diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst
index 6206611..ec4ffed 100644
--- a/Help/command/cmake_parse_arguments.rst
+++ b/Help/command/cmake_parse_arguments.rst
@@ -11,6 +11,17 @@ respective options.
cmake_parse_arguments(<prefix> <options> <one_value_keywords>
<multi_value_keywords> args...)
+ cmake_parse_arguments(PARSE_ARGV N <prefix> <options> <one_value_keywords>
+ <multi_value_keywords>)
+
+The first signature reads processes arguments passed in the ``args...``.
+This may be used in either a :command:`macro` or a :command:`function`.
+
+The ``PARSE_ARGV`` signature is only for use in a :command:`function`
+body. In this case the arguments that are parsed come from the
+``ARGV#`` variables of the calling function. The parsing starts with
+the Nth argument, where ``N`` is an unsigned integer. This allows for
+the values to have special characters like ``;`` in them.
The ``<options>`` argument contains all options for the respective macro,
i.e. keywords which can be used when calling the macro without any value
diff --git a/Help/command/find_package.rst b/Help/command/find_package.rst
index 58dff9d..c44fe86 100644
--- a/Help/command/find_package.rst
+++ b/Help/command/find_package.rst
@@ -194,13 +194,16 @@ configuration file. The tables below show the directories searched.
Each entry is meant for installation trees following Windows (W), UNIX
(U), or Apple (A) conventions::
- <prefix>/ (W)
- <prefix>/(cmake|CMake)/ (W)
- <prefix>/<name>*/ (W)
- <prefix>/<name>*/(cmake|CMake)/ (W)
- <prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U)
- <prefix>/(lib/<arch>|lib|share)/<name>*/ (U)
- <prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U)
+ <prefix>/ (W)
+ <prefix>/(cmake|CMake)/ (W)
+ <prefix>/<name>*/ (W)
+ <prefix>/<name>*/(cmake|CMake)/ (W)
+ <prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U)
+ <prefix>/(lib/<arch>|lib|share)/<name>*/ (U)
+ <prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U)
+ <prefix>/<name>*/(lib/<arch>|lib|share)/cmake/<name>*/ (W/U)
+ <prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/ (W/U)
+ <prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (W/U)
On systems supporting OS X Frameworks and Application Bundles the
following directories are searched for frameworks or bundles
diff --git a/Help/command/get_cmake_property.rst b/Help/command/get_cmake_property.rst
index 3a6fb41..497ab4e 100644
--- a/Help/command/get_cmake_property.rst
+++ b/Help/command/get_cmake_property.rst
@@ -1,15 +1,20 @@
get_cmake_property
------------------
-Get a property of the CMake instance.
+Get a global property of the CMake instance.
::
get_cmake_property(VAR property)
-Get a property from the CMake instance. The value of the property is
+Get a global property from the CMake instance. The value of the property is
stored in the variable ``VAR``. If the property is not found, ``VAR``
will be set to "NOTFOUND". See the :manual:`cmake-properties(7)` manual
for available properties.
-See also the more general :command:`get_property` command.
+See also the :command:`get_property` command ``GLOBAL`` option.
+
+In addition to global properties, this command (for historical reasons)
+also supports the :prop_dir:`VARIABLES` and :prop_dir:`MACROS` directory
+properties. It also supports a special ``COMPONENTS`` global property that
+lists the components given to the :command:`install` command.
diff --git a/Help/command/if.rst b/Help/command/if.rst
index 56e618c..0941029 100644
--- a/Help/command/if.rst
+++ b/Help/command/if.rst
@@ -30,10 +30,12 @@ else and endif clause is optional. Long expressions can be used and
there is a traditional order of precedence. Parenthetical expressions
are evaluated first followed by unary tests such as ``EXISTS``,
``COMMAND``, and ``DEFINED``. Then any binary tests such as
-``EQUAL``, ``LESS``, ``GREATER``, ``STRLESS``, ``STRGREATER``,
-``STREQUAL``, and ``MATCHES`` will be evaluated. Then boolean ``NOT``
-operators and finally boolean ``AND`` and then ``OR`` operators will
-be evaluated.
+``EQUAL``, ``LESS``, ``LESS_EQUAL, ``GREATER``, ``GREATER_EQUAL``,
+``STREQUAL``, ``STRLESS``, ``STRLESS_EQUAL``, ``STRGREATER``,
+``STRGREATER_EQUAL``, ``VERSION_EQUAL``, ``VERSION_LESS``,
+``VERSION_LESS_EQUAL``, ``VERSION_GREATER``, ``VERSION_GREATER_EQUAL``,
+and ``MATCHES`` will be evaluated. Then boolean ``NOT`` operators and
+finally boolean ``AND`` and then ``OR`` operators will be evaluated.
Possible expressions are:
@@ -115,6 +117,14 @@ Possible expressions are:
True if the given string or variable's value is a valid number and equal
to that on the right.
+``if(<variable|string> LESS_EQUAL <variable|string>)``
+ True if the given string or variable's value is a valid number and less
+ than or equal to that on the right.
+
+``if(<variable|string> GREATER_EQUAL <variable|string>)``
+ True if the given string or variable's value is a valid number and greater
+ than or equal to that on the right.
+
``if(<variable|string> STRLESS <variable|string>)``
True if the given string or variable's value is lexicographically less
than the string or variable on the right.
@@ -127,15 +137,31 @@ Possible expressions are:
True if the given string or variable's value is lexicographically equal
to the string or variable on the right.
+``if(<variable|string> STRLESS_EQUAL <variable|string>)``
+ True if the given string or variable's value is lexicographically less
+ than or equal to the string or variable on the right.
+
+``if(<variable|string> STRGREATER_EQUAL <variable|string>)``
+ True if the given string or variable's value is lexicographically greater
+ than or equal to the string or variable on the right.
+
``if(<variable|string> VERSION_LESS <variable|string>)``
Component-wise integer version number comparison (version format is
``major[.minor[.patch[.tweak]]]``).
+``if(<variable|string> VERSION_GREATER <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
``if(<variable|string> VERSION_EQUAL <variable|string>)``
Component-wise integer version number comparison (version format is
``major[.minor[.patch[.tweak]]]``).
-``if(<variable|string> VERSION_GREATER <variable|string>)``
+``if(<variable|string> VERSION_LESS_EQUAL <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
+``if(<variable|string> VERSION_GREATER_EQUAL <variable|string>)``
Component-wise integer version number comparison (version format is
``major[.minor[.patch[.tweak]]]``).
@@ -186,20 +212,21 @@ above-documented signature accepts ``<variable|string>``:
* If the left hand argument to ``MATCHES`` is missing it returns false
without error
-* Both left and right hand arguments to ``LESS``, ``GREATER``, and
- ``EQUAL`` are independently tested to see if they are defined
- variables, if so their defined values are used otherwise the original
- value is used.
+* Both left and right hand arguments to ``LESS``, ``GREATER``, ``EQUAL``,
+ ``LESS_EQUAL``, and ``GREATER_EQUAL``, are independently tested to see if
+ they are defined variables, if so their defined values are used otherwise
+ the original value is used.
-* Both left and right hand arguments to ``STRLESS``, ``STREQUAL``, and
- ``STRGREATER`` are independently tested to see if they are defined
- variables, if so their defined values are used otherwise the original
- value is used.
+* Both left and right hand arguments to ``STRLESS``, ``STRGREATER``,
+ ``STREQUAL``, ``STRLESS_EQUAL``, and ``STRGREATER_EQUAL`` are independently
+ tested to see if they are defined variables, if so their defined values are
+ used otherwise the original value is used.
* Both left and right hand arguments to ``VERSION_LESS``,
- ``VERSION_EQUAL``, and ``VERSION_GREATER`` are independently tested
- to see if they are defined variables, if so their defined values are
- used otherwise the original value is used.
+ ``VERSION_GREATER``, ``VERSION_EQUAL``, ``VERSION_LESS_EQUAL``, and
+ ``VERSION_GREATER_EQUAL`` are independently tested to see if they are defined
+ variables, if so their defined values are used otherwise the original value
+ is used.
* The right hand argument to ``NOT`` is tested to see if it is a boolean
constant, if so the value is used, otherwise it is assumed to be a
diff --git a/Help/command/string.rst b/Help/command/string.rst
index 3f4050e..19a095a 100644
--- a/Help/command/string.rst
+++ b/Help/command/string.rst
@@ -197,10 +197,12 @@ Comparison
::
- string(COMPARE EQUAL <string1> <string2> <output variable>)
- string(COMPARE NOTEQUAL <string1> <string2> <output variable>)
string(COMPARE LESS <string1> <string2> <output variable>)
string(COMPARE GREATER <string1> <string2> <output variable>)
+ string(COMPARE EQUAL <string1> <string2> <output variable>)
+ string(COMPARE NOTEQUAL <string1> <string2> <output variable>)
+ string(COMPARE LESS_EQUAL <string1> <string2> <output variable>)
+ string(COMPARE GREATER_EQUAL <string1> <string2> <output variable>)
Compare the strings and store true or false in the output variable.
diff --git a/Help/generator/Ninja.rst b/Help/generator/Ninja.rst
index d94e5f6..ef0e28b 100644
--- a/Help/generator/Ninja.rst
+++ b/Help/generator/Ninja.rst
@@ -7,6 +7,17 @@ A build.ninja file is generated into the build tree. Recent versions
of the ninja program can build the project through the "all" target.
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.
+For each subdirectory ``sub/dir`` of the project, additional targets
+are generated:
+
+``sub/dir/all``
+ Depends on all targets required by the subdirectory.
+
+``sub/dir/install``
+ Runs the install step in the subdirectory, if any.
+
+``sub/dir/test``
+ Runs the test step in the subdirectory, if any.
+
+``sub/dir/package``
+ Runs the package step in the subdirectory, if any.
diff --git a/Help/generator/Visual Studio 15.rst b/Help/generator/Visual Studio 15.rst
new file mode 100644
index 0000000..2b9e33a
--- /dev/null
+++ b/Help/generator/Visual Studio 15.rst
@@ -0,0 +1,16 @@
+Visual Studio 15
+----------------
+
+Generates Visual Studio 15 project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name.
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``Visual Studio 15 Win64``
+ Specify target platform ``x64``.
+
+``Visual Studio 15 ARM``
+ Specify target platform ``ARM``.
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index d4f47dd..64d15a9 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -66,12 +66,16 @@ Available logical expressions are:
``1`` if the CMake-id of the C compiler matches ``comp``, otherwise ``0``.
``$<CXX_COMPILER_ID:comp>``
``1`` if the CMake-id of the CXX compiler matches ``comp``, otherwise ``0``.
-``$<VERSION_GREATER:v1,v2>``
- ``1`` if ``v1`` is a version greater than ``v2``, else ``0``.
``$<VERSION_LESS:v1,v2>``
``1`` if ``v1`` is a version less than ``v2``, else ``0``.
+``$<VERSION_GREATER:v1,v2>``
+ ``1`` if ``v1`` is a version greater than ``v2``, else ``0``.
``$<VERSION_EQUAL:v1,v2>``
``1`` if ``v1`` is the same version as ``v2``, else ``0``.
+``$<VERSION_LESS_EQUAL:v1,v2>``
+ ``1`` if ``v1`` is a version less than or equal to ``v2``, else ``0``.
+``$<VERSION_GREATER_EQUAL:v1,v2>``
+ ``1`` if ``v1`` is a version greater than or equal to ``v2``, else ``0``.
``$<C_COMPILER_VERSION:ver>``
``1`` if the version of the C compiler matches ``ver``, otherwise ``0``.
``$<CXX_COMPILER_VERSION:ver>``
diff --git a/Help/manual/cmake-generators.7.rst b/Help/manual/cmake-generators.7.rst
index cde8de8..3df3a81 100644
--- a/Help/manual/cmake-generators.7.rst
+++ b/Help/manual/cmake-generators.7.rst
@@ -82,6 +82,7 @@ Visual Studio Generators
/generator/Visual Studio 11 2012
/generator/Visual Studio 12 2013
/generator/Visual Studio 14 2015
+ /generator/Visual Studio 15
Other Generators
^^^^^^^^^^^^^^^^
diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst
index 390220c..74eab2d 100644
--- a/Help/manual/cmake-toolchains.7.rst
+++ b/Help/manual/cmake-toolchains.7.rst
@@ -290,12 +290,206 @@ Windows Store may look like this:
set(CMAKE_SYSTEM_NAME WindowsStore)
set(CMAKE_SYSTEM_VERSION 8.1)
-Cross Compiling using NVIDIA Nsight Tegra
------------------------------------------
+.. _`Cross Compiling for Android`:
-A toolchain file to configure a Visual Studio generator to
-build using NVIDIA Nsight Tegra targeting Android may look
-like this:
+Cross Compiling for Android
+---------------------------
+
+A toolchain file may configure cross-compiling for Android by setting the
+:variable:`CMAKE_SYSTEM_NAME` variable to ``Android``. Further configuration
+is specific to the Android development environment to be used.
+
+For :ref:`Visual Studio Generators`, CMake expects :ref:`NVIDIA Nsight Tegra
+Visual Studio Edition <Cross Compiling for Android with NVIDIA Nsight Tegra
+Visual Studio Edition>` to be installed. See that section for further
+configuration details.
+
+For :ref:`Makefile Generators` and the :generator:`Ninja` generator,
+CMake expects one of these environments:
+
+* :ref:`NDK <Cross Compiling for Android with the NDK>`
+* :ref:`Standalone Toolchain <Cross Compiling for Android with a Standalone Toolchain>`
+
+CMake uses the following steps to select one of the environments:
+
+* If the :variable:`CMAKE_ANDROID_NDK` variable is set, the NDK at the
+ specified location will be used.
+
+* Else, if the :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN` variable
+ is set, the Standalone Toolchain at the specified location will be used.
+
+* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory
+ of the form ``<ndk>/platforms/android-<api>/arch-<arch>``, the ``<ndk>``
+ part will be used as the value of :variable:`CMAKE_ANDROID_NDK` and the
+ NDK will be used.
+
+* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory of the
+ form ``<standalone-toolchain>/sysroot``, the ``<standalone-toolchain>`` part
+ will be used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
+ and the Standalone Toolchain will be used.
+
+* Else, if a cmake variable ``ANDROID_NDK`` is set it will be used
+ as the value of :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
+
+* Else, if a cmake variable ``ANDROID_STANDALONE_TOOLCHAIN`` is set, it will be
+ used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the
+ Standalone Toolchain will be used.
+
+* Else, if an environment variable ``ANDROID_NDK_ROOT`` or
+ ``ANDROID_NDK`` is set, it will be used as the value of
+ :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
+
+* Else, if an environment variable ``ANDROID_STANDALONE_TOOLCHAIN`` is
+ set then it will be used as the value of
+ :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the Standalone
+ Toolchain will be used.
+
+* Else, an error diagnostic will be issued that neither the NDK or
+ Standalone Toolchain can be found.
+
+.. _`Cross Compiling for Android with the NDK`:
+
+Cross Compiling for Android with the NDK
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file may configure :ref:`Makefile Generators` or the
+:generator:`Ninja` generator to target Android for cross-compiling.
+
+Configure use of an Android NDK with the following variables:
+
+:variable:`CMAKE_SYSTEM_NAME`
+ Set to ``Android``. Must be specified to enable cross compiling
+ for Android.
+
+:variable:`CMAKE_SYSTEM_VERSION`
+ Set to the Android API level. If not specified, the value is
+ determined as follows:
+
+ * If the :variable:`CMAKE_ANDROID_API` variable is set, its value
+ is used as the API level.
+ * If the :variable:`CMAKE_SYSROOT` variable is set, the API level is
+ detected from the NDK directory structure containing the sysroot.
+ * Otherwise, the latest API level available in the NDK is used.
+
+:variable:`CMAKE_ANDROID_ARCH_ABI`
+ Set to the Android ABI (architecture). If not specified, this
+ variable will default to ``armeabi``.
+ The :variable:`CMAKE_ANDROID_ARCH` variable will be computed
+ from ``CMAKE_ANDROID_ARCH_ABI`` automatically.
+ Also see the :variable:`CMAKE_ANDROID_ARM_MODE` and
+ :variable:`CMAKE_ANDROID_ARM_NEON` variables.
+
+:variable:`CMAKE_ANDROID_NDK`
+ Set to the absolute path to the Android NDK root directory.
+ A ``${CMAKE_ANDROID_NDK}/platforms`` directory must exist.
+ If not specified, a default for this variable will be chosen
+ as specified :ref:`above <Cross Compiling for Android>`.
+
+:variable:`CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION`
+ Set to the version of the NDK toolchain to be selected as the compiler.
+ If not specified, the latest available GCC toolchain will be used.
+
+:variable:`CMAKE_ANDROID_STL_TYPE`
+ Set to specify which C++ standard library to use. If not specified,
+ a default will be selected as described in the variable documentation.
+
+The following variables will be computed and provided automatically:
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+ The absolute path prefix to the binutils in the NDK toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
+ The host platform suffix of the binutils in the NDK toolchain.
+
+
+For example, a toolchain file might contain:
+
+.. code-block:: cmake
+
+ set(CMAKE_SYSTEM_NAME Android)
+ set(CMAKE_SYSTEM_VERSION 21) # API level
+ set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
+ set(CMAKE_ANDROID_NDK /path/to/android-ndk)
+ set(CMAKE_ANDROID_STL_TYPE gnustl_static)
+
+Alternatively one may specify the values without a toolchain file:
+
+.. code-block:: console
+
+ $ cmake ../src \
+ -DCMAKE_SYSTEM_NAME=Android \
+ -DCMAKE_SYSTEM_VERSION=21 \
+ -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
+ -DCMAKE_ANDROID_NDK=/path/to/android-ndk \
+ -DCMAKE_ANDROID_STL_TYPE=gnustl_static
+
+.. _`Cross Compiling for Android with a Standalone Toolchain`:
+
+Cross Compiling for Android with a Standalone Toolchain
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file may configure :ref:`Makefile Generators` or the
+:generator:`Ninja` generator to target Android for cross-compiling
+using a standalone toolchain.
+
+Configure use of an Android standalone toolchain with the following variables:
+
+:variable:`CMAKE_SYSTEM_NAME`
+ Set to ``Android``. Must be specified to enable cross compiling
+ for Android.
+
+:variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
+ Set to the absolute path to the standalone toolchain root directory.
+ A ``${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot`` directory
+ must exist.
+ If not specified, a default for this variable will be chosen
+ as specified :ref:`above <Cross Compiling for Android>`.
+
+:variable:`CMAKE_ANDROID_ARM_MODE`
+ When the standalone toolchain targets ARM, optionally set this to ``ON``
+ to target 32-bit ARM instead of 16-bit Thumb.
+ See variable documentation for details.
+
+:variable:`CMAKE_ANDROID_ARM_NEON`
+ When the standalone toolchain targets ARM v7, optionally set thisto ``ON``
+ to target ARM NEON devices. See variable documentation for details.
+
+The following variables will be computed and provided automatically:
+
+:variable:`CMAKE_SYSTEM_VERSION`
+ The Android API level detected from the standalone toolchain.
+
+:variable:`CMAKE_ANDROID_ARCH_ABI`
+ The Android ABI detected from the standalone toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+ The absolute path prefix to the binutils in the standalone toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
+ The host platform suffix of the binutils in the standalone toolchain.
+
+For example, a toolchain file might contain:
+
+.. code-block:: cmake
+
+ set(CMAKE_SYSTEM_NAME Android)
+ set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /path/to/android-toolchain)
+
+Alternatively one may specify the values without a toolchain file:
+
+.. code-block:: console
+
+ $ cmake ../src \
+ -DCMAKE_SYSTEM_NAME=Android \
+ -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=/path/to/android-toolchain
+
+.. _`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`:
+
+Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file to configure one of the :ref:`Visual Studio Generators`
+to build using NVIDIA Nsight Tegra targeting Android may look like this:
.. code-block:: cmake
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 1138b82..b14f667 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -173,6 +173,7 @@ Variables that Describe the System
.. toctree::
:maxdepth: 1
+ /variable/ANDROID
/variable/APPLE
/variable/BORLAND
/variable/CMAKE_CL_64
@@ -213,6 +214,7 @@ Variables that Describe the System
/variable/WINCE
/variable/WINDOWS_PHONE
/variable/WINDOWS_STORE
+ /variable/XCODE
/variable/XCODE_VERSION
Variables that Control the Build
@@ -225,6 +227,9 @@ Variables that Control the Build
/variable/CMAKE_ANDROID_API
/variable/CMAKE_ANDROID_API_MIN
/variable/CMAKE_ANDROID_ARCH
+ /variable/CMAKE_ANDROID_ARCH_ABI
+ /variable/CMAKE_ANDROID_ARM_MODE
+ /variable/CMAKE_ANDROID_ARM_NEON
/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES
/variable/CMAKE_ANDROID_GUI
/variable/CMAKE_ANDROID_JAR_DEPENDENCIES
@@ -232,11 +237,14 @@ Variables that Control the Build
/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR
/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
+ /variable/CMAKE_ANDROID_NDK
+ /variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
/variable/CMAKE_ANDROID_PROCESS_MAX
/variable/CMAKE_ANDROID_PROGUARD
/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH
/variable/CMAKE_ANDROID_SECURE_PROPS_PATH
/variable/CMAKE_ANDROID_SKIP_ANT_STEP
+ /variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN
/variable/CMAKE_ANDROID_STL_TYPE
/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY
/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG
@@ -337,6 +345,8 @@ Variables for Languages
/variable/CMAKE_Fortran_MODDIR_FLAG
/variable/CMAKE_Fortran_MODOUT_FLAG
/variable/CMAKE_INTERNAL_PLATFORM_ABI
+ /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
+ /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
/variable/CMAKE_LANG_ARCHIVE_APPEND
/variable/CMAKE_LANG_ARCHIVE_CREATE
/variable/CMAKE_LANG_ARCHIVE_FINISH
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst
index 8f7c336..2ccc6be 100644
--- a/Help/manual/cmake.1.rst
+++ b/Help/manual/cmake.1.rst
@@ -180,6 +180,43 @@ CMake provides builtin command-line tools through the signature::
Run ``cmake -E`` or ``cmake -E help`` for a summary of commands.
Available commands are:
+``capabilities``
+ Report cmake capabilities in JSON format. The output is a JSON object
+ with the following keys:
+
+ ``version``
+ A JSON object with version information. Keys are:
+
+ ``string``
+ The full version string as displayed by cmake ``--version``.
+ ``major``
+ The major version number in integer form.
+ ``minor``
+ The minor version number in integer form.
+ ``patch``
+ The patch level in integer form.
+ ``suffix``
+ The cmake version suffix string.
+ ``isDirty``
+ A bool that is set if the cmake build is from a dirty tree.
+
+ ``generators``
+ A list available generators. Each generator is a JSON object with the
+ following keys:
+
+ ``name``
+ A string containing the name of the generator.
+ ``toolsetSupport``
+ ``true`` if the generator supports toolsets and ``false`` otherwise.
+ ``platformSupport``
+ ``true`` if the generator supports platforms and ``false`` otherwise.
+ ``extraGenerators``
+ A list of strings with all the extra generators compatible with
+ the generator.
+
+ ``serverMode``
+ ``true`` if cmake supports server-mode and ``false`` otherwise.
+
``chdir <dir> <cmd> [<arg>...]``
Change the current working directory and run a command.
diff --git a/Help/prop_tgt/ANDROID_API.rst b/Help/prop_tgt/ANDROID_API.rst
index 714ad58..63464d7 100644
--- a/Help/prop_tgt/ANDROID_API.rst
+++ b/Help/prop_tgt/ANDROID_API.rst
@@ -1,7 +1,8 @@
ANDROID_API
-----------
-Set the Android Target API version (e.g. ``15``). The version number
-must be a positive decimal integer. This property is initialized by
-the value of the :variable:`CMAKE_ANDROID_API` variable if it is set
-when a target is created.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property sets the Android target API version (e.g. ``15``).
+The version number must be a positive decimal integer. This property is
+initialized by the value of the :variable:`CMAKE_ANDROID_API` variable if
+it is set when a target is created.
diff --git a/Help/prop_tgt/ANDROID_ARCH.rst b/Help/prop_tgt/ANDROID_ARCH.rst
index 5477fb5..3e07e5a 100644
--- a/Help/prop_tgt/ANDROID_ARCH.rst
+++ b/Help/prop_tgt/ANDROID_ARCH.rst
@@ -1,7 +1,8 @@
ANDROID_ARCH
------------
-Set the Android target architecture.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property sets the Android target architecture.
This is a string property that could be set to the one of
the following values:
diff --git a/Help/prop_tgt/ANDROID_GUI.rst b/Help/prop_tgt/ANDROID_GUI.rst
index abdba7a..92e2041 100644
--- a/Help/prop_tgt/ANDROID_GUI.rst
+++ b/Help/prop_tgt/ANDROID_GUI.rst
@@ -1,7 +1,9 @@
ANDROID_GUI
-----------
-Build an executable as an application package on Android.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property specifies whether to build an executable as an
+application package on Android.
When this property is set to true the executable when built for Android
will be created as an application package. This property is initialized
diff --git a/Help/prop_tgt/ANDROID_STL_TYPE.rst b/Help/prop_tgt/ANDROID_STL_TYPE.rst
index 7256e26..386e96e 100644
--- a/Help/prop_tgt/ANDROID_STL_TYPE.rst
+++ b/Help/prop_tgt/ANDROID_STL_TYPE.rst
@@ -1,15 +1,27 @@
ANDROID_STL_TYPE
----------------
-Set the Android property that defines the type of STL support for the project.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property specifies the type of STL support for the project.
This is a string property that could set to the one of the following values:
-``none`` e.g. "No C++ Support"
-``system`` e.g. "Minimal C++ without STL"
-``gabi++_static`` e.g. "GAbi++ Static"
-``gabi++_shared`` e.g. "GAbi++ Shared"
-``gnustl_static`` e.g. "GNU libstdc++ Static"
-``gnustl_shared`` e.g. "GNU libstdc++ Shared"
-``stlport_static`` e.g. "STLport Static"
-``stlport_shared`` e.g. "STLport Shared"
+
+``none``
+ No C++ Support
+``system``
+ Minimal C++ without STL
+``gabi++_static``
+ GAbi++ Static
+``gabi++_shared``
+ GAbi++ Shared
+``gnustl_static``
+ GNU libstdc++ Static
+``gnustl_shared``
+ GNU libstdc++ Shared
+``stlport_static``
+ STLport Static
+``stlport_shared``
+ STLport Shared
+
This property is initialized by the value of the
-variable:`CMAKE_ANDROID_STL_TYPE` variable if it is set when a target is created.
+:variable:`CMAKE_ANDROID_STL_TYPE` variable if it is set when a target is
+created.
diff --git a/Help/prop_tgt/AUTORCC.rst b/Help/prop_tgt/AUTORCC.rst
index 8dce6b1..158fdf8 100644
--- a/Help/prop_tgt/AUTORCC.rst
+++ b/Help/prop_tgt/AUTORCC.rst
@@ -19,5 +19,10 @@ Additional command line options for rcc can be set via the
The global property :prop_gbl:`AUTOGEN_TARGETS_FOLDER` can be used to group
the autorcc targets together in an IDE, e.g. in MSVS.
+When there are multiple ``.qrc`` files with the same name, CMake will
+generate unspecified unique names for ``rcc``. Therefore if
+``Q_INIT_RESOURCE()`` or ``Q_CLEANUP_RESOURCE()`` need to be used the
+``.qrc`` file name must be unique.
+
See the :manual:`cmake-qt(7)` manual for more information on using CMake
with Qt.
diff --git a/Help/prop_tgt/BUNDLE_EXTENSION.rst b/Help/prop_tgt/BUNDLE_EXTENSION.rst
index ea265b3..6b3d580 100644
--- a/Help/prop_tgt/BUNDLE_EXTENSION.rst
+++ b/Help/prop_tgt/BUNDLE_EXTENSION.rst
@@ -1,7 +1,8 @@
BUNDLE_EXTENSION
----------------
-The file extension used to name a :prop_tgt:`BUNDLE` target on the OS X and iOS.
+The file extension used to name a :prop_tgt:`BUNDLE`, a :prop_tgt:`FRAMEWORK`,
+or a :prop_tgt:`MACOSX_BUNDLE` target on the OS X and iOS.
-The default value is ``bundle`` - you can also use ``plugin`` or whatever
-file extension is required by the host app for your bundle.
+The default value is ``bundle``, ``framework``, or ``app`` for the respective
+target types.
diff --git a/Help/release/3.6.rst b/Help/release/3.6.rst
index 771c9dd..144537d 100644
--- a/Help/release/3.6.rst
+++ b/Help/release/3.6.rst
@@ -308,3 +308,9 @@ Other Changes
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.
+
+* The CPack NSIS generator's configuration file template was fixed to
+ quote the path to the uninstaller tool used by the
+ :variable:`CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL` option.
+ This avoids depending on an insecure Windows feature to run an
+ uninstaller tool with a space in the path.
diff --git a/Help/release/dev/GNUInstallDirs-function.rst b/Help/release/dev/GNUInstallDirs-function.rst
new file mode 100644
index 0000000..65ea7fb
--- /dev/null
+++ b/Help/release/dev/GNUInstallDirs-function.rst
@@ -0,0 +1,5 @@
+GNUInstallDirs-function
+-----------------------
+
+* The :module:`GNUInstallDirs` module gained a new
+ :command:`GNUInstallDirs_get_absolute_install_dir` command.
diff --git a/Help/release/dev/add-extra-boolean-comparisons.rst b/Help/release/dev/add-extra-boolean-comparisons.rst
new file mode 100644
index 0000000..a928994
--- /dev/null
+++ b/Help/release/dev/add-extra-boolean-comparisons.rst
@@ -0,0 +1,6 @@
+add-extra-boolean-comparisons
+-----------------------------
+
+* The :command:`if` command gained new boolean comparison operations
+ ``LESS_EQUAL``, ``GREATER_EQUAL``, ``STRLESS_EQUAL``, ``STRGREATER_EQUAL``,
+ ``VERSION_LESS_EQUAL``, and ``VERSION_GREATER_EQUAL``.
diff --git a/Help/release/dev/android-platform-modules.rst b/Help/release/dev/android-platform-modules.rst
new file mode 100644
index 0000000..79ae992
--- /dev/null
+++ b/Help/release/dev/android-platform-modules.rst
@@ -0,0 +1,5 @@
+android-platform-modules
+------------------------
+
+* CMake now supports :ref:`Cross Compiling for Android` with simple
+ toolchain files.
diff --git a/Help/release/dev/app-framework-bundle-extension.rst b/Help/release/dev/app-framework-bundle-extension.rst
new file mode 100644
index 0000000..01855a2
--- /dev/null
+++ b/Help/release/dev/app-framework-bundle-extension.rst
@@ -0,0 +1,5 @@
+app-framework-bundle-extension
+------------------------------
+
+* On Apple platforms the :prop_tgt:`BUNDLE_EXTENSION` now also applies to
+ Frameworks and App Bundles.
diff --git a/Help/release/dev/ccmake-vim-navigation.rst b/Help/release/dev/ccmake-vim-navigation.rst
new file mode 100644
index 0000000..8fc1416
--- /dev/null
+++ b/Help/release/dev/ccmake-vim-navigation.rst
@@ -0,0 +1,4 @@
+ccmake-vim-navigation
+---------------------
+
+* :manual:`ccmake(1)` learned to support vim-like navigation bindings.
diff --git a/Help/release/dev/cmake-capabilities.rst b/Help/release/dev/cmake-capabilities.rst
new file mode 100644
index 0000000..7abb973
--- /dev/null
+++ b/Help/release/dev/cmake-capabilities.rst
@@ -0,0 +1,6 @@
+cmake-capabilities
+------------------
+
+* :manual:`cmake(1)` gained a ``-E capabilities`` option to provide a
+ machine-readable (JSON) description of the capabilities of the
+ cmake tool (available generators, etc.).
diff --git a/Help/release/dev/cpack-deb-long-filenames.rst b/Help/release/dev/cpack-deb-long-filenames.rst
new file mode 100644
index 0000000..6113eaf
--- /dev/null
+++ b/Help/release/dev/cpack-deb-long-filenames.rst
@@ -0,0 +1,6 @@
+cpack-deb-long-filenames
+------------------------
+
+* The :module:`CPackDeb` module learned to support long file names
+ when archive format is set to GNU tar.
+ See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
diff --git a/Help/release/dev/cpack-deb-package-description-fallback.rst b/Help/release/dev/cpack-deb-package-description-fallback.rst
new file mode 100644
index 0000000..71ca821
--- /dev/null
+++ b/Help/release/dev/cpack-deb-package-description-fallback.rst
@@ -0,0 +1,15 @@
+cpack-deb-package-description-fallback
+--------------------------------------
+
+* The :module:`CPackDeb` module gained a new
+ :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DESCRIPTION`
+ variable for component-specific package descriptions.
+
+* The :module:`CPackDeb` module changed its package description
+ override rules to match :module:`CPackRPM` module behavior.
+ If the :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` variable is set to
+ a non-default location then it is preferred to the
+ :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` variable.
+ This is a behavior change from previous versions but produces
+ more consistent and expected behavior.
+ See :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION`.
diff --git a/Help/release/dev/cpack-rpm-debuginfo-pkg.rst b/Help/release/dev/cpack-rpm-debuginfo-pkg.rst
new file mode 100644
index 0000000..8b37fe4
--- /dev/null
+++ b/Help/release/dev/cpack-rpm-debuginfo-pkg.rst
@@ -0,0 +1,6 @@
+cpack-rpm-debuginfo-pkg
+-----------------------
+
+* The :module:`CPackRPM` module learned to generate debuginfo
+ packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
+ and its per component version.
diff --git a/Help/release/dev/drop-linux-i386-binary.rst b/Help/release/dev/drop-linux-i386-binary.rst
new file mode 100644
index 0000000..60aa74e
--- /dev/null
+++ b/Help/release/dev/drop-linux-i386-binary.rst
@@ -0,0 +1,5 @@
+drop-linux-i386-binary
+----------------------
+
+* We no longer provide Linux i386 binaries for download from ``cmake.org``
+ for new versions of CMake.
diff --git a/Help/release/dev/ninja-add_custom_command-depfile.rst b/Help/release/dev/ninja-add_custom_command-depfile.rst
new file mode 100644
index 0000000..c8099fe
--- /dev/null
+++ b/Help/release/dev/ninja-add_custom_command-depfile.rst
@@ -0,0 +1,6 @@
+ninja-add_custom_command-depfile
+--------------------------------
+
+* The :command:`add_custom_command` command gained a new ``DEPFILE``
+ option that works with the :generator:`Ninja` generator to provide
+ implicit dependency information to the build tool.
diff --git a/Help/release/dev/ninja-directory-targets.rst b/Help/release/dev/ninja-directory-targets.rst
new file mode 100644
index 0000000..c4269d8
--- /dev/null
+++ b/Help/release/dev/ninja-directory-targets.rst
@@ -0,0 +1,8 @@
+ninja-directory-targets
+-----------------------
+
+* The :generator:`Ninja` generator learned to produce phony targets
+ of the form ``sub/dir/{test,install,package}`` to drive the build
+ of a subdirectory installation, test or packaging target.
+ This is equivalent to ``cd sub/dir; make {test,install,package}``
+ with :ref:`Makefile Generators`.
diff --git a/Help/release/dev/parse_arguments_argv_n.rst b/Help/release/dev/parse_arguments_argv_n.rst
new file mode 100644
index 0000000..758b72a
--- /dev/null
+++ b/Help/release/dev/parse_arguments_argv_n.rst
@@ -0,0 +1,6 @@
+parse_arguments_argv_n
+----------------------
+
+* The :command:`cmake_parse_arguments` command gained a new
+ mode to read arguments directly from ``ARGC`` and ``ARGV#``
+ variables inside a :command:`function` body.
diff --git a/Help/release/dev/vim-cmake-syntax.rst b/Help/release/dev/vim-cmake-syntax.rst
new file mode 100644
index 0000000..1757f9c
--- /dev/null
+++ b/Help/release/dev/vim-cmake-syntax.rst
@@ -0,0 +1,11 @@
+vim-cmake-syntax
+----------------
+
+* Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim``
+ from the `vim-cmake-syntax`_ project are now distributed with CMake.
+
+* Vim support files ``cmake-indent.vim``, ``cmake-syntax.vim``, and
+ ``cmake-help.vim`` have been removed in favor of the files now provided
+ from the `vim-cmake-syntax`_ project.
+
+.. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax
diff --git a/Help/release/dev/vs-15-generator.rst b/Help/release/dev/vs-15-generator.rst
new file mode 100644
index 0000000..be40cbc
--- /dev/null
+++ b/Help/release/dev/vs-15-generator.rst
@@ -0,0 +1,4 @@
+vs-15-generator
+---------------
+
+* The :generator:`Visual Studio 15` generator was added.
diff --git a/Help/release/dev/wix-custom-install-dir.rst b/Help/release/dev/wix-custom-install-dir.rst
new file mode 100644
index 0000000..cd12a88
--- /dev/null
+++ b/Help/release/dev/wix-custom-install-dir.rst
@@ -0,0 +1,7 @@
+wix-custom-install-dir
+----------------------
+
+* The CPack WIX generator now supports
+ :variable:`CPACK_WIX_SKIP_PROGRAM_FOLDER` to allow specification
+ of a custom absolute installation prefix outside
+ of the ProgramFiles folders.
diff --git a/Help/release/dev/wix-disabled-components.rst b/Help/release/dev/wix-disabled-components.rst
new file mode 100644
index 0000000..a7e4d5f
--- /dev/null
+++ b/Help/release/dev/wix-disabled-components.rst
@@ -0,0 +1,6 @@
+wix-disabled-components
+-----------------------
+
+* The CPack WIX generator now supports
+ :variable:`CPACK_COMPONENT_<compName>_DISABLED`.
+ This can be used to deselect a component from being installed by default.
diff --git a/Help/release/dev/wix-root-description.rst b/Help/release/dev/wix-root-description.rst
new file mode 100644
index 0000000..24afed2
--- /dev/null
+++ b/Help/release/dev/wix-root-description.rst
@@ -0,0 +1,7 @@
+wix-root-description
+--------------------
+
+* The CPack WIX generator now supports
+ :variable:`CPACK_WIX_ROOT_FEATURE_TITLE` and
+ :variable:`CPACK_WIX_ROOT_FEATURE_DESCRIPTION` to allow the specification
+ of a custom title and description for the root feature element.
diff --git a/Help/variable/ANDROID.rst b/Help/variable/ANDROID.rst
new file mode 100644
index 0000000..fede4ca
--- /dev/null
+++ b/Help/variable/ANDROID.rst
@@ -0,0 +1,5 @@
+ANDROID
+-------
+
+Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is
+``Android``.
diff --git a/Help/variable/CMAKE_ANDROID_API.rst b/Help/variable/CMAKE_ANDROID_API.rst
index c8264e0..c07a05a 100644
--- a/Help/variable/CMAKE_ANDROID_API.rst
+++ b/Help/variable/CMAKE_ANDROID_API.rst
@@ -1,5 +1,11 @@
CMAKE_ANDROID_API
-----------------
-Default value for the :prop_tgt:`ANDROID_API` target property.
-See that target property for additional information.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_API` target property. See that target property for
+additional information.
+
+Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
+the Android API version number targeted. This will be the same value as
+the :variable:`CMAKE_SYSTEM_VERSION` variable for ``Android`` platforms.
diff --git a/Help/variable/CMAKE_ANDROID_ARCH.rst b/Help/variable/CMAKE_ANDROID_ARCH.rst
index 8fbb46d..b91ca57 100644
--- a/Help/variable/CMAKE_ANDROID_ARCH.rst
+++ b/Help/variable/CMAKE_ANDROID_ARCH.rst
@@ -1,5 +1,19 @@
CMAKE_ANDROID_ARCH
------------------
-Default value for the :prop_tgt:`ANDROID_ARCH` target property.
-See that target property for additional information.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_ARCH` target property. See that target property for
+additional information.
+
+Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
+the name of the Android architecture corresponding to the value of the
+:variable:`CMAKE_ANDROID_ARCH_ABI` variable. The architecture name
+may be one of:
+
+* ``arm``
+* ``arm64``
+* ``mips``
+* ``mips64``
+* ``x86``
+* ``x86_64``
diff --git a/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst b/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
new file mode 100644
index 0000000..0a3ed3c
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
@@ -0,0 +1,17 @@
+CMAKE_ANDROID_ARCH_ABI
+----------------------
+
+When :ref:`Cross Compiling for Android`, this variable specifies the
+target architecture and ABI to be used. Valid values are:
+
+* ``arm64-v8a``
+* ``armeabi-v7a``
+* ``armeabi-v6``
+* ``armeabi``
+* ``mips``
+* ``mips64``
+* ``x86``
+* ``x86_64``
+
+See also the :variable:`CMAKE_ANDROID_ARM_MODE` and
+:variable:`CMAKE_ANDROID_ARM_NEON` variables.
diff --git a/Help/variable/CMAKE_ANDROID_ARM_MODE.rst b/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
new file mode 100644
index 0000000..ad3c37c
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_ARM_MODE
+----------------------
+
+When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
+is set to one of the ``armeabi`` architectures, set ``CMAKE_ANDROID_ARM_MODE``
+to ``ON`` to target 32-bit ARM processors (``-marm``). Otherwise, the
+default is to target the 16-bit Thumb processors (``-mthumb``).
diff --git a/Help/variable/CMAKE_ANDROID_ARM_NEON.rst b/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
new file mode 100644
index 0000000..4b7ae03
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
@@ -0,0 +1,6 @@
+CMAKE_ANDROID_ARM_NEON
+----------------------
+
+When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
+is set to ``armeabi-v7a`` set ``CMAKE_ANDROID_ARM_NEON`` to ``ON`` to target
+ARM NEON devices.
diff --git a/Help/variable/CMAKE_ANDROID_NDK.rst b/Help/variable/CMAKE_ANDROID_NDK.rst
new file mode 100644
index 0000000..d241dd0
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_NDK.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_NDK
+-----------------
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable holds
+the absolute path to the root directory of the NDK. The directory must
+contain a ``platforms`` subdirectory holding the ``android-<api>``
+directories.
diff --git a/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
new file mode 100644
index 0000000..dff7d64
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
@@ -0,0 +1,13 @@
+CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
+-----------------------------------
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable
+may be set to specify the version of the toolchain to be used
+as the compiler. The variable must be set to one of these forms:
+
+* ``<major>.<minor>``: GCC of specified version
+* ``clang<major>.<minor>``: Clang of specified version
+* ``clang``: Clang of most recent available version
+
+A toolchain of the requested version will be selected automatically to
+match the ABI named in the :variable:`CMAKE_ANDROID_ARCH_ABI` variable.
diff --git a/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst b/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
new file mode 100644
index 0000000..ea62cab
--- /dev/null
+++ b/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
@@ -0,0 +1,6 @@
+CMAKE_ANDROID_STANDALONE_TOOLCHAIN
+----------------------------------
+
+When :ref:`Cross Compiling for Android with a Standalone Toolchain`, this
+variable holds the absolute path to the root directory of the toolchain.
+The specified directory must contain a ``sysroot`` subdirectory.
diff --git a/Help/variable/CMAKE_ANDROID_STL_TYPE.rst b/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
index 766b2c8..cfb76aa 100644
--- a/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
+++ b/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
@@ -1,5 +1,36 @@
CMAKE_ANDROID_STL_TYPE
----------------------
-Default value for the :prop_tgt:`ANDROID_STL_TYPE` target property.
-See that target property for additional information.
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_STL_TYPE` target property. See that target property
+for additional information.
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable may be
+set to specify the STL variant to be used. The value may be one of:
+
+``none``
+ No C++ Support
+``system``
+ Minimal C++ without STL
+``gabi++_static``
+ GAbi++ Static
+``gabi++_shared``
+ GAbi++ Shared
+``gnustl_static``
+ GNU libstdc++ Static
+``gnustl_shared``
+ GNU libstdc++ Shared
+``c++_static``
+ LLVM libc++ Static
+``c++_shared``
+ LLVM libc++ Shared
+``stlport_static``
+ STLport Static
+``stlport_shared``
+ STLport Shared
+
+The default value is ``gnustl_static``. Note that this default differs from
+the native NDK build system because CMake may be used to build projects for
+Android that are not natively implemented for it and use the C++ standard
+library.
diff --git a/Help/variable/CMAKE_INSTALL_PREFIX.rst b/Help/variable/CMAKE_INSTALL_PREFIX.rst
index 3f3347f..86f1944 100644
--- a/Help/variable/CMAKE_INSTALL_PREFIX.rst
+++ b/Help/variable/CMAKE_INSTALL_PREFIX.rst
@@ -5,7 +5,7 @@ Install directory used by :command:`install`.
If ``make install`` is invoked or ``INSTALL`` is built, this directory is
prepended onto all install directories. This variable defaults to
-``/usr/local`` on UNIX and ``c:/Program Files`` on Windows.
+``/usr/local`` on UNIX and ``c:/Program Files/${PROJECT_NAME}`` on Windows.
On UNIX one can use the ``DESTDIR`` mechanism in order to relocate the
whole installation. ``DESTDIR`` means DESTination DIRectory. It is
diff --git a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
new file mode 100644
index 0000000..b51422f
--- /dev/null
+++ b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
@@ -0,0 +1,11 @@
+CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
+-------------------------------------
+
+When :ref:`Cross Compiling for Android` this variable contains the absolute
+path prefixing the toolchain GNU compiler and its binutils.
+
+See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
+
+For example, the path to the linker is::
+
+ ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
diff --git a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
new file mode 100644
index 0000000..a4af640
--- /dev/null
+++ b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
+-------------------------------------
+
+When :ref:`Cross Compiling for Android` this variable contains the
+host platform suffix of the toolchain GNU compiler and its binutils.
+
+See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`.
diff --git a/Help/variable/CMAKE_VERSION.rst b/Help/variable/CMAKE_VERSION.rst
index bbb1d91..872e2fa 100644
--- a/Help/variable/CMAKE_VERSION.rst
+++ b/Help/variable/CMAKE_VERSION.rst
@@ -26,11 +26,11 @@ Individual component values are also available in variables:
* :variable:`CMAKE_PATCH_VERSION`
* :variable:`CMAKE_TWEAK_VERSION`
-Use the :command:`if` command ``VERSION_LESS``, ``VERSION_EQUAL``, or
-``VERSION_GREATER`` operators to compare version string values against
-``CMAKE_VERSION`` using a component-wise test. Version component
-values may be 10 or larger so do not attempt to compare version
-strings as floating-point numbers.
+Use the :command:`if` command ``VERSION_LESS``, ``VERSION_GREATER``,
+``VERSION_EQUAL``, ``VERSION_LESS_EQUAL``, or ``VERSION_GREATER_EQUAL``
+operators to compare version string values against ``CMAKE_VERSION`` using a
+component-wise test. Version component values may be 10 or larger so do not
+attempt to compare version strings as floating-point numbers.
.. note::
diff --git a/Help/variable/MSVC10.rst b/Help/variable/MSVC10.rst
index 33692ad..98e0493 100644
--- a/Help/variable/MSVC10.rst
+++ b/Help/variable/MSVC10.rst
@@ -1,6 +1,5 @@
MSVC10
------
-``True`` when using Microsoft Visual C++ 10.0
-
-Set to ``true`` when the compiler is version 10.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v100`` toolset
+(``cl`` version 16) or another compiler that simulates it.
diff --git a/Help/variable/MSVC11.rst b/Help/variable/MSVC11.rst
index 3ab606d..42b7b86 100644
--- a/Help/variable/MSVC11.rst
+++ b/Help/variable/MSVC11.rst
@@ -1,6 +1,5 @@
MSVC11
------
-``True`` when using Microsoft Visual C++ 11.0
-
-Set to ``true`` when the compiler is version 11.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v110`` toolset
+(``cl`` version 17) or another compiler that simulates it.
diff --git a/Help/variable/MSVC12.rst b/Help/variable/MSVC12.rst
index 15fa64b..0648f35 100644
--- a/Help/variable/MSVC12.rst
+++ b/Help/variable/MSVC12.rst
@@ -1,6 +1,5 @@
MSVC12
------
-``True`` when using Microsoft Visual C++ 12.0.
-
-Set to ``true`` when the compiler is version 12.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v120`` toolset
+(``cl`` version 18) or another compiler that simulates it.
diff --git a/Help/variable/MSVC14.rst b/Help/variable/MSVC14.rst
index 0b9125d..f67ebc7 100644
--- a/Help/variable/MSVC14.rst
+++ b/Help/variable/MSVC14.rst
@@ -1,6 +1,5 @@
MSVC14
------
-``True`` when using Microsoft Visual C++ 14.0.
-
-Set to ``true`` when the compiler is version 14.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v140`` toolset
+(``cl`` version 19) or another compiler that simulates it.
diff --git a/Help/variable/MSVC80.rst b/Help/variable/MSVC80.rst
index b17777c..0d33e82 100644
--- a/Help/variable/MSVC80.rst
+++ b/Help/variable/MSVC80.rst
@@ -1,6 +1,5 @@
MSVC80
------
-``True`` when using Microsoft Visual C++ 8.0.
-
-Set to ``true`` when the compiler is version 8.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v80`` toolset
+(``cl`` version 14) or another compiler that simulates it.
diff --git a/Help/variable/MSVC90.rst b/Help/variable/MSVC90.rst
index 7162d6c..1716e6f 100644
--- a/Help/variable/MSVC90.rst
+++ b/Help/variable/MSVC90.rst
@@ -1,6 +1,5 @@
MSVC90
------
-``True`` when using Microsoft Visual C++ 9.0.
-
-Set to ``true`` when the compiler is version 9.0 of Microsoft Visual C++.
+``True`` when using the Microsoft Visual Studio ``v90`` toolset
+(``cl`` version 15) or another compiler that simulates it.
diff --git a/Help/variable/MSVC_VERSION.rst b/Help/variable/MSVC_VERSION.rst
index ef3b0b5..e2aff3c9 100644
--- a/Help/variable/MSVC_VERSION.rst
+++ b/Help/variable/MSVC_VERSION.rst
@@ -13,4 +13,4 @@ Known version numbers are::
1600 = VS 10.0
1700 = VS 11.0
1800 = VS 12.0
- 1900 = VS 14.0
+ 1900 = VS 14.0, 15.0
diff --git a/Help/variable/XCODE.rst b/Help/variable/XCODE.rst
new file mode 100644
index 0000000..99f20fb
--- /dev/null
+++ b/Help/variable/XCODE.rst
@@ -0,0 +1,4 @@
+XCODE
+-----
+
+``True`` when using :generator:`Xcode` generator.