summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Help/command/cmake_parse_arguments.rst6
-rw-r--r--Help/command/ctest_submit.rst10
-rw-r--r--Help/command/file.rst2
-rw-r--r--Help/command/find_package.rst2
-rw-r--r--Help/command/get_filename_component.rst2
-rw-r--r--Help/command/list.rst4
-rw-r--r--Help/command/message.rst2
-rw-r--r--Help/command/project.rst10
-rw-r--r--Help/command/string.rst4
-rw-r--r--Help/cpack_gen/deb.rst4
-rw-r--r--Help/cpack_gen/freebsd.rst2
-rw-r--r--Help/cpack_gen/ifw.rst4
-rw-r--r--Help/cpack_gen/rpm.rst6
-rw-r--r--Help/envvar/CUDAHOSTCXX.rst7
-rw-r--r--Help/generator/Green Hills MULTI.rst2
-rw-r--r--Modules/BundleUtilities.cmake28
-rw-r--r--Modules/CMakeGraphVizOptions.cmake5
-rw-r--r--Modules/CMakePackageConfigHelpers.cmake46
-rw-r--r--Modules/CPack.cmake12
-rw-r--r--Modules/CPackIFW.cmake84
-rw-r--r--Modules/CTestCoverageCollectGCOV.cmake13
-rw-r--r--Modules/CTestUseLaunchers.cmake9
-rw-r--r--Modules/CheckCSourceCompiles.cmake4
-rw-r--r--Modules/CheckCSourceRuns.cmake4
-rw-r--r--Modules/CheckCXXSourceCompiles.cmake4
-rw-r--r--Modules/CheckCXXSourceRuns.cmake4
-rw-r--r--Modules/CheckCXXSymbolExists.cmake6
-rw-r--r--Modules/CheckFortranFunctionExists.cmake5
-rw-r--r--Modules/CheckFortranSourceCompiles.cmake2
-rw-r--r--Modules/CheckFunctionExists.cmake6
-rw-r--r--Modules/CheckIPOSupported.cmake3
-rw-r--r--Modules/CheckIncludeFile.cmake6
-rw-r--r--Modules/CheckIncludeFileCXX.cmake6
-rw-r--r--Modules/CheckIncludeFiles.cmake6
-rw-r--r--Modules/CheckLibraryExists.cmake19
-rw-r--r--Modules/CheckPrototypeDefinition.cmake22
-rw-r--r--Modules/CheckStructHasMember.cmake23
-rw-r--r--Modules/CheckSymbolExists.cmake6
-rw-r--r--Modules/CheckTypeSize.cmake26
-rw-r--r--Modules/CheckVariableExists.cmake19
-rw-r--r--Modules/Documentation.cmake3
-rw-r--r--Modules/ExternalData.cmake36
-rw-r--r--Modules/ExternalProject.cmake128
-rw-r--r--Modules/FeatureSummary.cmake26
-rw-r--r--Modules/FetchContent.cmake7
-rw-r--r--Modules/FindALSA.cmake2
-rw-r--r--Modules/FindArmadillo.cmake3
-rw-r--r--Modules/FindBISON.cmake16
-rw-r--r--Modules/FindBLAS.cmake34
-rw-r--r--Modules/FindBZip2.cmake5
-rw-r--r--Modules/FindBoost.cmake426
-rw-r--r--Modules/FindCUDA.cmake814
-rw-r--r--Modules/FindCUDAToolkit.cmake5
-rw-r--r--Modules/FindCURL.cmake14
-rw-r--r--Modules/FindCups.cmake2
-rw-r--r--Modules/FindCurses.cmake8
-rw-r--r--Modules/FindDoxygen.cmake79
-rw-r--r--Modules/FindEXPAT.cmake2
-rw-r--r--Modules/FindFLEX.cmake19
-rw-r--r--Modules/FindFLTK.cmake4
-rw-r--r--Modules/FindFreetype.cmake7
-rw-r--r--Modules/FindGDAL.cmake5
-rw-r--r--Modules/FindGLEW.cmake5
-rw-r--r--Modules/FindGLUT.cmake5
-rw-r--r--Modules/FindGTK2.cmake24
-rw-r--r--Modules/FindGTest.cmake15
-rw-r--r--Modules/FindGettext.cmake2
-rw-r--r--Modules/FindGit.cmake13
-rw-r--r--Modules/FindGnuTLS.cmake2
-rw-r--r--Modules/FindHDF5.cmake12
-rw-r--r--Modules/FindHg.cmake3
-rw-r--r--Modules/FindICU.cmake3
-rw-r--r--Modules/FindIce.cmake12
-rw-r--r--Modules/FindImageMagick.cmake3
-rw-r--r--Modules/FindIntl.cmake8
-rw-r--r--Modules/FindJPEG.cmake8
-rw-r--r--Modules/FindJava.cmake7
-rw-r--r--Modules/FindLAPACK.cmake21
-rw-r--r--Modules/FindLATEX.cmake4
-rw-r--r--Modules/FindLibArchive.cmake4
-rw-r--r--Modules/FindLibLZMA.cmake2
-rw-r--r--Modules/FindLibXml2.cmake8
-rw-r--r--Modules/FindLibXslt.cmake5
-rw-r--r--Modules/FindLua.cmake5
-rw-r--r--Modules/FindMPI.cmake11
-rw-r--r--Modules/FindMatlab.cmake38
-rw-r--r--Modules/FindOpenACC.cmake17
-rw-r--r--Modules/FindOpenCL.cmake5
-rw-r--r--Modules/FindOpenGL.cmake44
-rw-r--r--Modules/FindOpenMP.cmake10
-rw-r--r--Modules/FindOpenSSL.cmake17
-rw-r--r--Modules/FindPNG.cmake2
-rw-r--r--Modules/FindPackageHandleStandardArgs.cmake18
-rw-r--r--Modules/FindPkgConfig.cmake76
-rw-r--r--Modules/FindPostgreSQL.cmake2
-rw-r--r--Modules/FindProtobuf.cmake24
-rw-r--r--Modules/FindPython.cmake2
-rw-r--r--Modules/FindPython2.cmake2
-rw-r--r--Modules/FindPython3.cmake2
-rw-r--r--Modules/FindQt.cmake6
-rw-r--r--Modules/FindRuby.cmake12
-rw-r--r--Modules/FindSDL.cmake8
-rw-r--r--Modules/FindSWIG.cmake19
-rw-r--r--Modules/FindSquish.cmake3
-rw-r--r--Modules/FindSubversion.cmake9
-rw-r--r--Modules/FindTIFF.cmake7
-rw-r--r--Modules/FindThreads.cmake4
-rw-r--r--Modules/FindVulkan.cmake7
-rw-r--r--Modules/FindX11.cmake20
-rw-r--r--Modules/FindXercesC.cmake5
-rw-r--r--Modules/FindZLIB.cmake5
-rw-r--r--Modules/FindwxWidgets.cmake9
-rw-r--r--Modules/GNUInstallDirs.cmake11
-rw-r--r--Modules/GenerateExportHeader.cmake22
-rw-r--r--Modules/GetPrerequisites.cmake11
-rw-r--r--Modules/GoogleTest.cmake10
-rw-r--r--Modules/InstallRequiredSystemLibraries.cmake16
-rw-r--r--Modules/ProcessorCount.cmake3
-rw-r--r--Modules/UseJava.cmake44
-rw-r--r--Modules/UseSWIG.cmake70
-rw-r--r--Modules/WriteCompilerDetectionHeader.cmake27
-rw-r--r--Tests/RunCMake/CMP0106/CMP0106-NEW-stderr.txt2
-rw-r--r--Tests/RunCMake/CMP0106/CMP0106-WARN-stderr.txt4
-rw-r--r--Utilities/Sphinx/static/cmake.css6
124 files changed, 2009 insertions, 852 deletions
diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst
index 8dedc80108..7c85da6103 100644
--- a/Help/command/cmake_parse_arguments.rst
+++ b/Help/command/cmake_parse_arguments.rst
@@ -1,8 +1,6 @@
cmake_parse_arguments
---------------------
-.. versionadded:: 3.5
-
Parse function or macro arguments.
.. code-block:: cmake
@@ -13,6 +11,10 @@ Parse function or macro arguments.
cmake_parse_arguments(PARSE_ARGV <N> <prefix> <options>
<one_value_keywords> <multi_value_keywords>)
+.. versionadded:: 3.5
+ This command is implemented natively. Previously, it has been defined in the
+ module :module:`CMakeParseArguments`.
+
This command is for use in macros or functions.
It processes the arguments given to that macro or function,
and defines a set of variables which hold the values of the
diff --git a/Help/command/ctest_submit.rst b/Help/command/ctest_submit.rst
index 9c1031819b..e6d277f59d 100644
--- a/Help/command/ctest_submit.rst
+++ b/Help/command/ctest_submit.rst
@@ -115,16 +115,16 @@ to tell CDash which handler to use to process the data.
This signature interprets options in the same way as the first one.
.. versionadded:: 3.8
- Added ``RETRY_COUNT``, ``RETRY_DELAY``, ``QUIET`` options.
+ Added the ``RETRY_COUNT``, ``RETRY_DELAY``, ``QUIET`` options.
.. versionadded:: 3.9
- Added ``HTTPHEADER`` option.
+ Added the ``HTTPHEADER`` option.
.. versionadded:: 3.13
- Added ``RETURN_VALUE`` option.
+ Added the ``RETURN_VALUE`` option.
.. versionadded:: 3.14
- Added ``SUBMIT_URL`` option.
+ Added the ``SUBMIT_URL`` option.
.. versionadded:: 3.15
- Added ``BUILD_ID`` option.
+ Added the ``BUILD_ID`` option.
diff --git a/Help/command/file.rst b/Help/command/file.rst
index 9580c9cf1d..6837672576 100644
--- a/Help/command/file.rst
+++ b/Help/command/file.rst
@@ -126,7 +126,7 @@ Parse a list of ASCII strings from ``<filename>`` and store it in
the ``ENCODING`` option will be defaulted to respect the Byte Order Mark.
.. versionadded:: 3.2
- Added ``UTF-16LE``, ``UTF-16BE``, ``UTF-32LE``, ``UTF-32BE`` encodings.
+ Added the ``UTF-16LE``, ``UTF-16BE``, ``UTF-32LE``, ``UTF-32BE`` encodings.
For example, the code
diff --git a/Help/command/find_package.rst b/Help/command/find_package.rst
index 2ef3e97b87..3dfd62fc32 100644
--- a/Help/command/find_package.rst
+++ b/Help/command/find_package.rst
@@ -432,7 +432,7 @@ enabled.
hard-coded guesses.
.. versionadded:: 3.16
- Added ``CMAKE_FIND_USE_<CATEGORY>_PATH`` variables to globally disable
+ Added the ``CMAKE_FIND_USE_<CATEGORY>_PATH`` variables to globally disable
various search locations.
.. |FIND_XXX| replace:: find_package
diff --git a/Help/command/get_filename_component.rst b/Help/command/get_filename_component.rst
index e073a28c05..be9d00af30 100644
--- a/Help/command/get_filename_component.rst
+++ b/Help/command/get_filename_component.rst
@@ -25,7 +25,7 @@ Sets ``<var>`` to a component of ``<FileName>``, where ``<mode>`` is one of:
PATH = Legacy alias for DIRECTORY (use for CMake <= 2.8.11)
.. versionadded:: 3.14
- Added ``LAST_EXT`` and ``NAME_WLE`` modes.
+ Added the ``LAST_EXT`` and ``NAME_WLE`` modes.
Paths are returned with forward slashes and have no trailing slashes.
If the optional ``CACHE`` argument is specified, the result variable is
diff --git a/Help/command/list.rst b/Help/command/list.rst
index ee3530c51b..7accc5a39e 100644
--- a/Help/command/list.rst
+++ b/Help/command/list.rst
@@ -318,10 +318,10 @@ Reverses the contents of the list in-place.
Sorts the list in-place alphabetically.
.. versionadded:: 3.13
- Added ``COMPARE``, ``CASE``, and ``ORDER`` options.
+ Added the ``COMPARE``, ``CASE``, and ``ORDER`` options.
.. versionadded:: 3.18
- Added ``COMPARE NATURAL`` option.
+ Added the ``COMPARE NATURAL`` option.
Use the ``COMPARE`` keyword to select the comparison method for sorting.
The ``<compare>`` option should be one of:
diff --git a/Help/command/message.rst b/Help/command/message.rst
index 3ea82a63b9..e44803e858 100644
--- a/Help/command/message.rst
+++ b/Help/command/message.rst
@@ -72,7 +72,7 @@ influences the way the message is handled:
removed before releasing the project, packaging up the files, etc.
.. versionadded:: 3.15
- Added ``NOTICE``, ``VERBOSE``, ``DEBUG``, and ``TRACE`` levels.
+ Added the ``NOTICE``, ``VERBOSE``, ``DEBUG``, and ``TRACE`` levels.
The CMake command-line tool displays ``STATUS`` to ``TRACE`` messages on stdout
with the message preceded by two hyphens and a space. All other message types
diff --git a/Help/command/project.rst b/Help/command/project.rst
index d3454cc47a..6c931b692a 100644
--- a/Help/command/project.rst
+++ b/Help/command/project.rst
@@ -76,7 +76,7 @@ The options are:
then the description is also stored in the variable :variable:`CMAKE_PROJECT_DESCRIPTION`.
.. versionadded:: 3.12
- Added ``<PROJECT-NAME>_DESCRIPTION`` variable.
+ Added the ``<PROJECT-NAME>_DESCRIPTION`` variable.
``HOMEPAGE_URL <url-string>``
.. versionadded:: 3.12
@@ -120,8 +120,6 @@ options are intended for use as default values in package metadata and documenta
Code Injection
^^^^^^^^^^^^^^
-.. versionadded:: 3.15
-
If the :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` or
:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables are set,
the files they point to will be included as the first step of the
@@ -135,8 +133,12 @@ they point to will be included as the last step of the ``project()`` command.
If both are set, then :variable:`CMAKE_PROJECT_INCLUDE` will be included before
:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`.
+.. versionadded:: 3.15
+ Added the ``CMAKE_PROJECT_INCLUDE`` and ``CMAKE_PROJECT_INCLUDE_BEFORE``
+ variables.
+
.. versionadded:: 3.17
- Added ``CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`` variable.
+ Added the ``CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`` variable.
Usage
^^^^^
diff --git a/Help/command/string.rst b/Help/command/string.rst
index 178d9d3ef5..8ad0089afd 100644
--- a/Help/command/string.rst
+++ b/Help/command/string.rst
@@ -335,7 +335,7 @@ Comparison
Compare the strings and store true or false in the ``<output_variable>``.
.. versionadded:: 3.7
- Added ``LESS_EQUAL`` and ``GREATER_EQUAL`` options.
+ Added the ``LESS_EQUAL`` and ``GREATER_EQUAL`` options.
.. _`Supported Hash Algorithms`:
@@ -373,7 +373,7 @@ The supported ``<HASH>`` algorithm names are:
Keccak SHA-3.
.. versionadded:: 3.8
- Added ``SHA3`` hash algorithms.
+ Added the ``SHA3_*`` hash algorithms.
Generation
^^^^^^^^^^
diff --git a/Help/cpack_gen/deb.rst b/Help/cpack_gen/deb.rst
index 8fbefdb37a..7cae613779 100644
--- a/Help/cpack_gen/deb.rst
+++ b/Help/cpack_gen/deb.rst
@@ -224,7 +224,7 @@ List of CPack DEB generator specific variables:
Per-component ``CPACK_DEBIAN_<COMPONENT>_DESCRIPTION`` variables.
.. versionadded:: 3.16
- ``CPACK_PACKAGE_DESCRIPTION_FILE`` variable.
+ The ``CPACK_PACKAGE_DESCRIPTION_FILE`` variable.
.. _Debian Policy Manual: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
@@ -303,7 +303,7 @@ List of CPack DEB generator specific variables:
* Default : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
.. versionadded:: 3.12
- ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+ The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
.. note::
diff --git a/Help/cpack_gen/freebsd.rst b/Help/cpack_gen/freebsd.rst
index 3cfa4a0c2f..2c9356956c 100644
--- a/Help/cpack_gen/freebsd.rst
+++ b/Help/cpack_gen/freebsd.rst
@@ -90,7 +90,7 @@ the RPM information (e.g. package license).
for Debian packaging, so we may as well re-use it).
.. versionadded:: 3.12
- ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+ The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE
diff --git a/Help/cpack_gen/ifw.rst b/Help/cpack_gen/ifw.rst
index 0dd2816254..a940a95e75 100644
--- a/Help/cpack_gen/ifw.rst
+++ b/Help/cpack_gen/ifw.rst
@@ -209,6 +209,8 @@ Package
.. variable:: CPACK_IFW_PACKAGE_RESOURCES
+ .. versionadded:: 3.7
+
List of additional resources ('.qrc' files) to include in the installer
binary.
@@ -279,6 +281,8 @@ These variables are cached, and may be configured if needed.
.. variable:: CPACK_IFW_ARCHIVEGEN_EXECUTABLE
+ .. versionadded:: 3.19
+
The path to ``archivegen``.
.. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE
diff --git a/Help/cpack_gen/rpm.rst b/Help/cpack_gen/rpm.rst
index a8c3c5cc09..5260a1d7c3 100644
--- a/Help/cpack_gen/rpm.rst
+++ b/Help/cpack_gen/rpm.rst
@@ -210,7 +210,7 @@ List of CPack RPM generator specific variables:
* Default : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
.. versionadded:: 3.12
- ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+ The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
.. variable:: CPACK_RPM_PACKAGE_DESCRIPTION
CPACK_RPM_<component>_PACKAGE_DESCRIPTION
@@ -527,7 +527,7 @@ List of CPack RPM generator specific variables:
rpm -qp --scripts package.rpm
.. versionadded:: 3.18
- ``CPACK_RPM_PRE_TRANS_SCRIPT_FILE`` variable.
+ The ``CPACK_RPM_PRE_TRANS_SCRIPT_FILE`` variable.
.. variable:: CPACK_RPM_POST_INSTALL_SCRIPT_FILE
CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
@@ -551,7 +551,7 @@ List of CPack RPM generator specific variables:
rpm -qp --scripts package.rpm
.. versionadded:: 3.18
- ``CPACK_RPM_POST_TRANS_SCRIPT_FILE`` variable.
+ The ``CPACK_RPM_POST_TRANS_SCRIPT_FILE`` variable.
.. variable:: CPACK_RPM_USER_FILELIST
CPACK_RPM_<COMPONENT>_USER_FILELIST
diff --git a/Help/envvar/CUDAHOSTCXX.rst b/Help/envvar/CUDAHOSTCXX.rst
index 19b15e9fc6..963f9d1130 100644
--- a/Help/envvar/CUDAHOSTCXX.rst
+++ b/Help/envvar/CUDAHOSTCXX.rst
@@ -13,5 +13,8 @@ configuration run (including the first), the environment variable will be
ignored if the :variable:`CMAKE_CUDA_HOST_COMPILER` variable is defined.
This environment variable is primarily meant for use with projects that
-enable ``CUDA`` as a first-class language. The :module:`FindCUDA`
-module will also use it to initialize its ``CUDA_HOST_COMPILER`` setting.
+enable ``CUDA`` as a first-class language.
+
+.. versionadded:: 3.13
+ The :module:`FindCUDA`
+ module will use this variable to initialize its ``CUDA_HOST_COMPILER`` setting.
diff --git a/Help/generator/Green Hills MULTI.rst b/Help/generator/Green Hills MULTI.rst
index c25c5f5d1f..5d2b1cd4dc 100644
--- a/Help/generator/Green Hills MULTI.rst
+++ b/Help/generator/Green Hills MULTI.rst
@@ -65,7 +65,7 @@ Cache variables that are used for toolset and target system customization:
| ``GHS_OS_DIR_OPTION`` default value is ``-os_dir``.
.. versionadded:: 3.15
- ``GHS_OS_DIR_OPTION`` variable.
+ The ``GHS_OS_DIR_OPTION`` variable.
* ``GHS_BSP_NAME``
diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake
index f521d22200..0beff04fdd 100644
--- a/Modules/BundleUtilities.cmake
+++ b/Modules/BundleUtilities.cmake
@@ -59,9 +59,10 @@ fix each one up according to its own list of prerequisites.
Then clear all the keys and call ``verify_app`` on the final bundle to
ensure that it is truly standalone.
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``).
+.. versionadded:: 3.6
+ As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+ which are then ignored
+ (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``).
.. code-block:: cmake
@@ -78,9 +79,10 @@ Verifies that an application ``<app>`` appears valid based on running
analysis tools on it. Calls :command:`message(FATAL_ERROR)` if the application
is not verified.
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+.. versionadded:: 3.6
+ As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+ which are then ignored
+ (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
.. code-block:: cmake
@@ -155,9 +157,10 @@ them. Set values associated with each key such that we can loop over
all of them and copy prerequisite libs into the bundle and then do
appropriate ``install_name_tool`` fixups.
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+.. versionadded:: 3.6
+ As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+ which are then ignored
+ (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
.. code-block:: cmake
@@ -215,9 +218,10 @@ Verifies that the sum of all prerequisites of all files inside the
bundle are contained within the bundle or are ``system`` libraries,
presumed to exist everywhere.
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+.. versionadded:: 3.6
+ As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+ which are then ignored
+ (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
.. code-block:: cmake
diff --git a/Modules/CMakeGraphVizOptions.cmake b/Modules/CMakeGraphVizOptions.cmake
index be4a3be365..708672258a 100644
--- a/Modules/CMakeGraphVizOptions.cmake
+++ b/Modules/CMakeGraphVizOptions.cmake
@@ -29,8 +29,9 @@ Graphviz package:
dot -Tpng -o foo.png foo.dot
-The different dependency types ``PUBLIC``, ``INTERFACE`` and ``PRIVATE``
-are represented as solid, dashed and dotted edges.
+.. versionadded:: 3.10
+ The different dependency types ``PUBLIC``, ``INTERFACE`` and ``PRIVATE``
+ are represented as solid, dashed and dotted edges.
Variables specific to the Graphviz support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/Modules/CMakePackageConfigHelpers.cmake b/Modules/CMakePackageConfigHelpers.cmake
index 1a7f9cf2b1..372e9f4632 100644
--- a/Modules/CMakePackageConfigHelpers.cmake
+++ b/Modules/CMakePackageConfigHelpers.cmake
@@ -81,13 +81,14 @@ always relative to the installed location of the package. This works both for
relative and also for absolute locations. For absolute locations it works
only if the absolute location is a subdirectory of ``INSTALL_PREFIX``.
-If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to
-calculate all the relative paths. The ``<path>`` argument must be an absolute
-path. If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX`
-variable will be used instead. The default value is good when generating a
-FooConfig.cmake file to use your package from the install tree. When
-generating a FooConfig.cmake file to use your package from the build tree this
-option should be used.
+.. versionadded:: 3.1
+ If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to
+ calculate all the relative paths. The ``<path>`` argument must be an absolute
+ path. If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX`
+ variable will be used instead. The default value is good when generating a
+ FooConfig.cmake file to use your package from the install tree. When
+ generating a FooConfig.cmake file to use your package from the build tree this
+ option should be used.
By default ``configure_package_config_file`` also generates two helper macros,
``set_and_check()`` and ``check_required_components()`` into the
@@ -159,22 +160,27 @@ If your project has more elaborated version matching rules, you will need to
write your own custom ``ConfigVersion.cmake`` file instead of using this
macro.
-.. note:: ``COMPATIBILITY_MODE`` ``AnyNewerVersion`` handles the version range
- if any is specified (see :command:`find_package` command for the details).
- All other modes are incompatible with version ranges and will display an
- author warning if one is specified.
+.. versionadded:: 3.11
+ The ``SameMinorVersion`` compatibility mode.
-If ``ARCH_INDEPENDENT`` is given, the installed package version will be
-considered compatible even if it was built for a different architecture than
-the requested architecture. Otherwise, an architecture check will be performed,
-and the package will be considered compatible only if the architecture matches
-exactly. For example, if the package is built for a 32-bit architecture, the
-package is only considered compatible if it is used on a 32-bit architecture,
-unless ``ARCH_INDEPENDENT`` is given, in which case the package is considered
-compatible on any architecture.
+.. versionadded:: 3.14
+ If ``ARCH_INDEPENDENT`` is given, the installed package version will be
+ considered compatible even if it was built for a different architecture than
+ the requested architecture. Otherwise, an architecture check will be performed,
+ and the package will be considered compatible only if the architecture matches
+ exactly. For example, if the package is built for a 32-bit architecture, the
+ package is only considered compatible if it is used on a 32-bit architecture,
+ unless ``ARCH_INDEPENDENT`` is given, in which case the package is considered
+ compatible on any architecture.
.. note:: ``ARCH_INDEPENDENT`` is intended for header-only libraries or similar
- packages with no binaries.
+ packages with no binaries.
+
+.. versionadded:: 3.19
+ ``COMPATIBILITY_MODE`` ``AnyNewerVersion`` handles the version range
+ if any is specified (see :command:`find_package` command for the details).
+ All other modes are incompatible with version ranges and will display an
+ author warning if one is specified.
Internally, this macro executes :command:`configure_file()` to create the
resulting version file. Depending on the ``COMPATIBILITY``, the corresponding
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index 7529a1f431..eb1d43b515 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -194,6 +194,8 @@ installers. The most commonly-used variables are:
.. variable:: CPACK_PACKAGE_CHECKSUM
+ .. versionadded:: 3.7
+
An algorithm that will be used to generate an additional file with the
checksum of the package. The output file name will be::
@@ -271,6 +273,8 @@ installers. The most commonly-used variables are:
.. variable:: CPACK_VERBATIM_VARIABLES
+ .. versionadded:: 3.4
+
If set to ``TRUE``, values of variables prefixed with ``CPACK_`` will be
escaped before being written to the configuration files, so that the cpack
program receives them exactly as they were specified. If not, characters
@@ -356,6 +360,8 @@ The following variables are for advanced uses of CPack:
.. variable:: CPACK_INSTALL_SCRIPTS
+ .. versionadded:: 3.16
+
Extra CMake scripts executed by CPack during its local staging
installation. They are executed before installing the files to be packaged.
The scripts are not called by a standalone install (e.g.: ``make install``).
@@ -372,6 +378,8 @@ The following variables are for advanced uses of CPack:
.. variable:: CPACK_PRE_BUILD_SCRIPTS
+ .. versionadded:: 3.19
+
List of CMake scripts to execute after CPack has installed the files to
be packaged into a staging directory and before producing the package(s)
from those files. See also :variable:`CPACK_INSTALL_SCRIPTS` and
@@ -379,6 +387,8 @@ The following variables are for advanced uses of CPack:
.. variable:: CPACK_POST_BUILD_SCRIPTS
+ .. versionadded:: 3.19
+
List of CMake scripts to execute after CPack has produced the resultant
packages and before copying them back to the build directory.
See also :variable:`CPACK_INSTALL_SCRIPTS`,
@@ -386,6 +396,8 @@ The following variables are for advanced uses of CPack:
.. variable:: CPACK_PACKAGE_FILES
+ .. versionadded:: 3.19
+
List of package files created in the staging directory, with each file
provided as a full absolute path. This variable is populated by CPack
just before invoking the post-build scripts listed in
diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake
index 6ce0bfcc8a..d57cf18bac 100644
--- a/Modules/CPackIFW.cmake
+++ b/Modules/CPackIFW.cmake
@@ -51,20 +51,28 @@ The module defines the following commands:
of a group to which it belongs.
``ESSENTIAL``
+ .. versionadded:: 3.6
+
if set, then the package manager stays disabled until that
component is updated.
``VIRTUAL``
+ .. versionadded:: 3.8
+
if set, then the component will be hidden from the installer.
It is a equivalent of the ``HIDDEN`` option from the
:command:`cpack_add_component` command.
``FORCED_INSTALLATION``
+ .. versionadded:: 3.8
+
if set, then the component must always be installed.
It is a equivalent of the ``REQUIRED`` option from the
:command:`cpack_add_component` command.
``REQUIRES_ADMIN_RIGHTS``
+ .. versionadded:: 3.8
+
set it if the component needs to be installed with elevated permissions.
``NAME``
@@ -72,14 +80,20 @@ The module defines the following commands:
By default used origin component name.
``DISPLAY_NAME``
+ .. versionadded:: 3.8
+
set to rewrite original name configured by
:command:`cpack_add_component` command.
``DESCRIPTION``
+ .. versionadded:: 3.8
+
set to rewrite original description configured by
:command:`cpack_add_component` command.
``UPDATE_TEXT``
+ .. versionadded:: 3.8
+
will be added to the component description if this is an update to
the component.
@@ -88,22 +102,32 @@ The module defines the following commands:
By default used :variable:`CPACK_PACKAGE_VERSION`.
``RELEASE_DATE``
+ .. versionadded:: 3.8
+
keep empty to auto generate.
``SCRIPT``
is a relative or absolute path to operations script
for this component.
- ``PRIORITY`` | ``SORTING_PRIORITY``
+ ``SORTING_PRIORITY``
+ .. versionadded:: 3.8
+
is priority of the component in the tree.
- The ``PRIORITY`` option is deprecated and will be removed in a future
- version of CMake. Please use ``SORTING_PRIORITY`` option instead.
- ``DEPENDS`` | ``DEPENDENCIES``
+ ``PRIORITY``
+ .. deprecated:: 3.8
+ Old name for ``SORTING_PRIORITY``.
+
+ ``DEPENDS``, ``DEPENDENCIES``
+ .. versionadded:: 3.8
+
list of dependency component or component group identifiers in
QtIFW style.
``AUTO_DEPEND_ON``
+ .. versionadded:: 3.8
+
list of identifiers of component or component group in QtIFW style
that this component has an automatic dependency on.
@@ -112,21 +136,31 @@ The module defines the following commands:
component. You can specify more then one license.
``DEFAULT``
+ .. versionadded:: 3.8
+
Possible values are: TRUE, FALSE, and SCRIPT.
Set to FALSE to disable the component in the installer or to SCRIPT
to resolved during runtime (don't forget add the file of the script
as a value of the ``SCRIPT`` option).
``USER_INTERFACES``
+ .. versionadded:: 3.7
+
is a list of <file_path> ('.ui' files) representing pages to load.
``TRANSLATIONS``
+ .. versionadded:: 3.8
+
is a list of <file_path> ('.qm' files) representing translations to load.
``REPLACES``
+ .. versionadded:: 3.10
+
list of identifiers of component or component group to replace.
``CHECKABLE``
+ .. versionadded:: 3.10
+
Possible values are: TRUE, FALSE.
Set to FALSE if you want to hide the checkbox for an item.
This is useful when only a few subcomponents should be selected
@@ -162,13 +196,19 @@ The module defines the following commands:
command.
``VIRTUAL``
+ .. versionadded:: 3.8
+
if set, then the group will be hidden from the installer.
Note that setting this on a root component does not work.
``FORCED_INSTALLATION``
+ .. versionadded:: 3.8
+
if set, then the group must always be installed.
``REQUIRES_ADMIN_RIGHTS``
+ .. versionadded:: 3.8
+
set it if the component group needs to be installed with elevated
permissions.
@@ -177,14 +217,20 @@ The module defines the following commands:
By default used origin component group name.
``DISPLAY_NAME``
+ .. versionadded:: 3.8
+
set to rewrite original name configured by
:command:`cpack_add_component_group` command.
``DESCRIPTION``
+ .. versionadded:: 3.8
+
set to rewrite original description configured by
:command:`cpack_add_component_group` command.
``UPDATE_TEXT``
+ .. versionadded:: 3.8
+
will be added to the component group description if this is an update to
the component group.
@@ -193,22 +239,30 @@ The module defines the following commands:
By default used :variable:`CPACK_PACKAGE_VERSION`.
``RELEASE_DATE``
+ .. versionadded:: 3.8
+
keep empty to auto generate.
``SCRIPT``
is a relative or absolute path to operations script
for this component group.
- ``PRIORITY`` | ``SORTING_PRIORITY``
+ ``SORTING_PRIORITY``
is priority of the component group in the tree.
- The ``PRIORITY`` option is deprecated and will be removed in a future
- version of CMake. Please use ``SORTING_PRIORITY`` option instead.
- ``DEPENDS`` | ``DEPENDENCIES``
+ ``PRIORITY``
+ .. deprecated:: 3.8
+ Old name for ``SORTING_PRIORITY``.
+
+ ``DEPENDS``, ``DEPENDENCIES``
+ .. versionadded:: 3.8
+
list of dependency component or component group identifiers in
QtIFW style.
``AUTO_DEPEND_ON``
+ .. versionadded:: 3.8
+
list of identifiers of component or component group in QtIFW style
that this component group has an automatic dependency on.
@@ -217,6 +271,8 @@ The module defines the following commands:
component group. You can specify more then one license.
``DEFAULT``
+ .. versionadded:: 3.8
+
Possible values are: TRUE, FALSE, and SCRIPT.
Set to TRUE to preselect the group in the installer
(this takes effect only on groups that have no visible child components)
@@ -224,15 +280,23 @@ The module defines the following commands:
the script as a value of the ``SCRIPT`` option).
``USER_INTERFACES``
+ .. versionadded:: 3.7
+
is a list of <file_path> ('.ui' files) representing pages to load.
``TRANSLATIONS``
+ .. versionadded:: 3.8
+
is a list of <file_path> ('.qm' files) representing translations to load.
``REPLACES``
+ .. versionadded:: 3.10
+
list of identifiers of component or component group to replace.
``CHECKABLE``
+ .. versionadded:: 3.10
+
Possible values are: TRUE, FALSE.
Set to FALSE if you want to hide the checkbox for an item.
This is useful when only a few subcomponents should be selected
@@ -272,6 +336,8 @@ The module defines the following commands:
.. command:: cpack_ifw_update_repository
+ .. versionadded:: 3.6
+
Update QtIFW specific repository from remote repository.
::
@@ -307,6 +373,8 @@ The module defines the following commands:
.. command:: cpack_ifw_add_package_resources
+ .. versionadded:: 3.7
+
Add additional resources in the installer binary.
::
diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index a01a2fea22..a6fa3a4c6c 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -39,7 +39,10 @@ After generating this tar file, it can be sent to CDash for display with the
upload to CDash. Relative paths will be interpreted with respect
to the top-level build directory.
- ``TARBALL_COMPRESSION <option>`` Specify a compression algorithm for the
+ ``TARBALL_COMPRESSION <option>``
+ .. versionadded:: 3.18
+
+ Specify a compression algorithm for the
``TARBALL`` data file. Using this option reduces the size of the data file
before it is submitted to CDash. ``<option>`` must be one of ``GZIP``,
``BZIP2``, ``XZ``, ``ZSTD``, ``FROM_EXT``, or an expression that CMake
@@ -68,15 +71,23 @@ After generating this tar file, it can be sent to CDash for display with the
If not specified, the default option is just ``-b -x``.
``GLOB``
+ .. versionadded:: 3.6
+
Recursively search for .gcda files in build_dir rather than
determining search locations by reading TargetDirectories.txt.
``DELETE``
+ .. versionadded:: 3.6
+
Delete coverage files after they've been packaged into the .tar.
``QUIET``
Suppress non-error messages that otherwise would have been
printed out by this function.
+
+ .. versionadded:: 3.3
+ Added support for the :variable:`CTEST_CUSTOM_COVERAGE_EXCLUDE` variable.
+
#]=======================================================================]
function(ctest_coverage_collect_gcov)
diff --git a/Modules/CTestUseLaunchers.cmake b/Modules/CTestUseLaunchers.cmake
index 3dff926052..23a206b2a5 100644
--- a/Modules/CTestUseLaunchers.cmake
+++ b/Modules/CTestUseLaunchers.cmake
@@ -24,9 +24,12 @@ long as your CMakeLists uses include(CTest) or
include(CTestUseLaunchers), it will use the value of the ENV variable
to initialize a CTEST_USE_LAUNCHERS cache variable. This cache
variable initialization only occurs if CTEST_USE_LAUNCHERS is not
-already defined. If CTEST_USE_LAUNCHERS is on in a ctest -S script
-the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE
-to the cmake command used to configure the project.
+already defined.
+
+.. versionadded:: 3.8
+ If CTEST_USE_LAUNCHERS is on in a ctest -S script
+ the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE
+ to the cmake command used to configure the project.
#]=======================================================================]
if(NOT DEFINED CTEST_USE_LAUNCHERS AND DEFINED ENV{CTEST_USE_LAUNCHERS_DEFAULT})
diff --git a/Modules/CheckCSourceCompiles.cmake b/Modules/CheckCSourceCompiles.cmake
index 698a007ebc..b24da49bc0 100644
--- a/Modules/CheckCSourceCompiles.cmake
+++ b/Modules/CheckCSourceCompiles.cmake
@@ -44,6 +44,8 @@ Check if given C source compiles and links into an executable.
directory property will be ignored.
``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+
A :ref:`;-list <CMake Language Lists>` of options to add to the link
command (see :command:`try_compile` for further details).
@@ -54,6 +56,8 @@ Check if given C source compiles and links into an executable.
further details).
``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+
If this variable evaluates to a boolean true value, all status messages
associated with the check will be suppressed.
diff --git a/Modules/CheckCSourceRuns.cmake b/Modules/CheckCSourceRuns.cmake
index a99e47e833..a6081ff46e 100644
--- a/Modules/CheckCSourceRuns.cmake
+++ b/Modules/CheckCSourceRuns.cmake
@@ -43,6 +43,8 @@ subsequently be run.
directory property will be ignored.
``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+
A :ref:`;-list <CMake Language Lists>` of options to add to the link
command (see :command:`try_run` for further details).
@@ -53,6 +55,8 @@ subsequently be run.
further details).
``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+
If this variable evaluates to a boolean true value, all status messages
associated with the check will be suppressed.
diff --git a/Modules/CheckCXXSourceCompiles.cmake b/Modules/CheckCXXSourceCompiles.cmake
index dc209b2688..502bfa76e6 100644
--- a/Modules/CheckCXXSourceCompiles.cmake
+++ b/Modules/CheckCXXSourceCompiles.cmake
@@ -44,6 +44,8 @@ Check if given C++ source compiles and links into an executable.
directory property will be ignored.
``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+
A :ref:`;-list <CMake Language Lists>` of options to add to the link
command (see :command:`try_compile` for further details).
@@ -54,6 +56,8 @@ Check if given C++ source compiles and links into an executable.
further details).
``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+
If this variable evaluates to a boolean true value, all status messages
associated with the check will be suppressed.
diff --git a/Modules/CheckCXXSourceRuns.cmake b/Modules/CheckCXXSourceRuns.cmake
index c8ff3d7bf5..af03453d98 100644
--- a/Modules/CheckCXXSourceRuns.cmake
+++ b/Modules/CheckCXXSourceRuns.cmake
@@ -43,6 +43,8 @@ subsequently be run.
directory property will be ignored.
``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+
A :ref:`;-list <CMake Language Lists>` of options to add to the link
command (see :command:`try_run` for further details).
@@ -53,6 +55,8 @@ subsequently be run.
further details).
``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+
If this variable evaluates to a boolean true value, all status messages
associated with the check will be suppressed.
diff --git a/Modules/CheckCXXSymbolExists.cmake b/Modules/CheckCXXSymbolExists.cmake
index 5c9079dbf3..b4da4fac88 100644
--- a/Modules/CheckCXXSymbolExists.cmake
+++ b/Modules/CheckCXXSymbolExists.cmake
@@ -49,12 +49,14 @@ the way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
For example:
diff --git a/Modules/CheckFortranFunctionExists.cmake b/Modules/CheckFortranFunctionExists.cmake
index d06203fc23..ad72e2f09e 100644
--- a/Modules/CheckFortranFunctionExists.cmake
+++ b/Modules/CheckFortranFunctionExists.cmake
@@ -24,8 +24,9 @@ The following variables may be set before calling this macro to modify
the way the check is run:
``CMAKE_REQUIRED_LINK_OPTIONS``
- A :ref:`;-list <CMake Language Lists>` of options to add to the link
- command (see :command:`try_compile` for further details).
+ .. versionadded:: 3.14
+ A :ref:`;-list <CMake Language Lists>` of options to add to the link
+ command (see :command:`try_compile` for further details).
``CMAKE_REQUIRED_LIBRARIES``
A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
diff --git a/Modules/CheckFortranSourceCompiles.cmake b/Modules/CheckFortranSourceCompiles.cmake
index 5ede284572..e1343293b7 100644
--- a/Modules/CheckFortranSourceCompiles.cmake
+++ b/Modules/CheckFortranSourceCompiles.cmake
@@ -65,6 +65,8 @@ Check if given Fortran source compiles and links into an executable.
directory property will be ignored.
``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+
A :ref:`;-list <CMake Language Lists>` of options to add to the link
command (see :command:`try_compile` for further details).
diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake
index 136da89d9b..9efa132b43 100644
--- a/Modules/CheckFunctionExists.cmake
+++ b/Modules/CheckFunctionExists.cmake
@@ -28,12 +28,14 @@ way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
.. note::
diff --git a/Modules/CheckIPOSupported.cmake b/Modules/CheckIPOSupported.cmake
index 1dd951d83c..0bc3c92338 100644
--- a/Modules/CheckIPOSupported.cmake
+++ b/Modules/CheckIPOSupported.cmake
@@ -33,6 +33,9 @@ property.
It makes no sense to use this module when :policy:`CMP0069` is set to ``OLD`` so
module will return error in this case. See policy :policy:`CMP0069` for details.
+.. versionadded:: 3.13
+ Add support for Visual Studio generators.
+
Examples
^^^^^^^^
diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake
index 3a104736c6..71ddde7f21 100644
--- a/Modules/CheckIncludeFile.cmake
+++ b/Modules/CheckIncludeFile.cmake
@@ -29,12 +29,14 @@ the way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
See the :module:`CheckIncludeFiles` module to check for multiple headers
at once. See the :module:`CheckIncludeFileCXX` module to check for headers
diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake
index 496550fa86..953224e763 100644
--- a/Modules/CheckIncludeFileCXX.cmake
+++ b/Modules/CheckIncludeFileCXX.cmake
@@ -29,12 +29,14 @@ the way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles`
to check for one or more ``C`` headers.
diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake
index 8e10cd6abb..1800ca888e 100644
--- a/Modules/CheckIncludeFiles.cmake
+++ b/Modules/CheckIncludeFiles.cmake
@@ -35,12 +35,14 @@ the way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX`
to check for a single header file in ``C`` or ``CXX`` languages.
diff --git a/Modules/CheckLibraryExists.cmake b/Modules/CheckLibraryExists.cmake
index 6470dfd049..804e0cbba3 100644
--- a/Modules/CheckLibraryExists.cmake
+++ b/Modules/CheckLibraryExists.cmake
@@ -26,13 +26,18 @@ Check if the function exists.
The following variables may be set before calling this macro to modify
the way the check is run:
-::
-
- CMAKE_REQUIRED_FLAGS = string of compile command line flags
- CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
- CMAKE_REQUIRED_LIBRARIES = list of libraries to link
- CMAKE_REQUIRED_QUIET = execute quietly without messages
+``CMAKE_REQUIRED_FLAGS``
+ string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+ list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+ list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+ list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+ execute quietly without messages.
#]=======================================================================]
include_guard(GLOBAL)
diff --git a/Modules/CheckPrototypeDefinition.cmake b/Modules/CheckPrototypeDefinition.cmake
index 8b06403d7e..d29c5e89f3 100644
--- a/Modules/CheckPrototypeDefinition.cmake
+++ b/Modules/CheckPrototypeDefinition.cmake
@@ -35,14 +35,20 @@ Check if the prototype we expect is correct.
The following variables may be set before calling this function to modify
the way the check is run:
-::
-
- CMAKE_REQUIRED_FLAGS = string of compile command line flags
- CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- CMAKE_REQUIRED_INCLUDES = list of include directories
- CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
- CMAKE_REQUIRED_LIBRARIES = list of libraries to link
- CMAKE_REQUIRED_QUIET = execute quietly without messages
+``CMAKE_REQUIRED_FLAGS``
+ string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+ list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+ list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+ list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+ list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+ execute quietly without messages.
#]=======================================================================]
#
diff --git a/Modules/CheckStructHasMember.cmake b/Modules/CheckStructHasMember.cmake
index 842a8fdb72..8217c84c2a 100644
--- a/Modules/CheckStructHasMember.cmake
+++ b/Modules/CheckStructHasMember.cmake
@@ -23,18 +23,23 @@ Check if the given struct or class has the specified member variable
<language> - the compiler to use (C or CXX)
-
The following variables may be set before calling this macro to modify
the way the check is run:
-::
-
- CMAKE_REQUIRED_FLAGS = string of compile command line flags
- CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- CMAKE_REQUIRED_INCLUDES = list of include directories
- CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
- CMAKE_REQUIRED_LIBRARIES = list of libraries to link
- CMAKE_REQUIRED_QUIET = execute quietly without messages
+``CMAKE_REQUIRED_FLAGS``
+ string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+ list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+ list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+ list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+ list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+ execute quietly without messages.
Example:
diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake
index 4f202c41d5..f8ca584026 100644
--- a/Modules/CheckSymbolExists.cmake
+++ b/Modules/CheckSymbolExists.cmake
@@ -39,12 +39,14 @@ the way the check is run:
a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
the compiler.
``CMAKE_REQUIRED_LINK_OPTIONS``
- a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+ .. versionadded:: 3.14
+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
``CMAKE_REQUIRED_LIBRARIES``
a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
command. See policy :policy:`CMP0075`.
``CMAKE_REQUIRED_QUIET``
- execute quietly without messages.
+ .. versionadded:: 3.1
+ execute quietly without messages.
For example:
diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake
index 17beadcb10..69f68f9d4a 100644
--- a/Modules/CheckTypeSize.cmake
+++ b/Modules/CheckTypeSize.cmake
@@ -57,19 +57,25 @@ member you can do something like this:
check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
-
The following variables may be set before calling this macro to modify
the way the check is run:
-::
-
- CMAKE_REQUIRED_FLAGS = string of compile command line flags
- CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- CMAKE_REQUIRED_INCLUDES = list of include directories
- CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
- CMAKE_REQUIRED_LIBRARIES = list of libraries to link
- CMAKE_REQUIRED_QUIET = execute quietly without messages
- CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include
+``CMAKE_REQUIRED_FLAGS``
+ string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+ list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+ list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+ list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+ list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+ execute quietly without messages.
+``CMAKE_EXTRA_INCLUDE_FILES``
+ list of extra headers to include.
#]=======================================================================]
include(CheckIncludeFile)
diff --git a/Modules/CheckVariableExists.cmake b/Modules/CheckVariableExists.cmake
index 8a93535249..7420124f48 100644
--- a/Modules/CheckVariableExists.cmake
+++ b/Modules/CheckVariableExists.cmake
@@ -26,13 +26,18 @@ Check if the variable exists.
The following variables may be set before calling this macro to modify
the way the check is run:
-::
-
- CMAKE_REQUIRED_FLAGS = string of compile command line flags
- CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
- CMAKE_REQUIRED_LIBRARIES = list of libraries to link
- CMAKE_REQUIRED_QUIET = execute quietly without messages
+``CMAKE_REQUIRED_FLAGS``
+ string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+ list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_LINK_OPTIONS``
+ .. versionadded:: 3.14
+ list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+ list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+ .. versionadded:: 3.1
+ execute quietly without messages.
#]=======================================================================]
include_guard(GLOBAL)
diff --git a/Modules/Documentation.cmake b/Modules/Documentation.cmake
index c297231e5b..2430f85a0c 100644
--- a/Modules/Documentation.cmake
+++ b/Modules/Documentation.cmake
@@ -5,6 +5,9 @@
Documentation
-------------
+.. deprecated:: 3.18
+ This module does nothing, unless policy :policy:`CMP0106` is set to ``OLD``.
+
This module provides support for the VTK documentation framework. It
relies on several tools (Doxygen, Perl, etc).
#]=======================================================================]
diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake
index 294167c9ad..d6fbae9aaf 100644
--- a/Modules/ExternalData.cmake
+++ b/Modules/ExternalData.cmake
@@ -90,10 +90,11 @@ Module Functions
in one of the paths specified in the ``ExternalData_OBJECT_STORES``
variable.
- The ``SHOW_PROGRESS`` argument may be passed to suppress progress information
- during the download of objects. If not provided, it defaults to ``OFF`` for
- :generator:`Ninja` and :generator:`Ninja Multi-Config` generators and ``ON``
- otherwise.
+ .. versionadded:: 3.20
+ The ``SHOW_PROGRESS`` argument may be passed to suppress progress information
+ during the download of objects. If not provided, it defaults to ``OFF`` for
+ :generator:`Ninja` and :generator:`Ninja Multi-Config` generators and ``ON``
+ otherwise.
Typically only one target is needed to manage all external data within
a project. Call this function once at the end of configuration after
@@ -114,6 +115,8 @@ calling any of the functions provided by this module.
.. variable:: ExternalData_CUSTOM_SCRIPT_<key>
+ .. versionadded:: 3.2
+
Specify a full path to a ``.cmake`` custom fetch script identified by
``<key>`` in entries of the ``ExternalData_URL_TEMPLATES`` list.
See `Custom Fetch Scripts`_.
@@ -132,6 +135,8 @@ calling any of the functions provided by this module.
.. variable:: ExternalData_NO_SYMLINKS
+ .. versionadded:: 3.3
+
The real data files named by expanded ``DATA{}`` references may be made
available under ``ExternalData_BINARY_ROOT`` using symbolic links on
some platforms. The ``ExternalData_NO_SYMLINKS`` variable may be set
@@ -177,6 +182,8 @@ calling any of the functions provided by this module.
.. variable:: ExternalData_URL_ALGO_<algo>_<key>
+ .. versionadded:: 3.3
+
Specify a custom URL component to be substituted for URL template
placeholders of the form ``%(algo:<key>)``, where ``<key>`` is a
valid C identifier, when fetching an object referenced via hash
@@ -207,10 +214,11 @@ For example, the argument ``DATA{img.png}`` may be satisfied by either a
real ``img.png`` file in the current source directory or a ``img.png.md5``
file containing its MD5 sum.
-Multiple content links of the same name with different hash algorithms
-are supported (e.g. ``img.png.sha256`` and ``img.png.sha1``) so long as
-they all correspond to the same real file. This allows objects to be
-fetched from sources indexed by different hash algorithms.
+.. versionadded:: 3.8
+ Multiple content links of the same name with different hash algorithms
+ are supported (e.g. ``img.png.sha256`` and ``img.png.sha1``) so long as
+ they all correspond to the same real file. This allows objects to be
+ fetched from sources indexed by different hash algorithms.
Referencing File Series
"""""""""""""""""""""""
@@ -269,8 +277,11 @@ associated file options. For example, the argument
``DATA{MyDataDir/,REGEX:.*}`` will pass the full path to a ``MyDataDir``
directory on the command line and ensure that the directory contains
files corresponding to every file or content link in the ``MyDataDir``
-source directory. In order to match associated files in subdirectories,
-specify a ``RECURSE:`` option, e.g. ``DATA{MyDataDir/,RECURSE:,REGEX:.*}``.
+source directory.
+
+.. versionadded:: 3.3
+ In order to match associated files in subdirectories,
+ specify a ``RECURSE:`` option, e.g. ``DATA{MyDataDir/,RECURSE:,REGEX:.*}``.
Hash Algorithms
^^^^^^^^^^^^^^^
@@ -290,6 +301,9 @@ The following hash algorithms are supported::
SHA3_384 .sha3-384 Keccak SHA-3
SHA3_512 .sha3-512 Keccak SHA-3
+.. versionadded:: 3.8
+ Added the ``SHA3_*`` hash algorithms.
+
Note that the hashes are used only for unique data identification and
download verification.
@@ -298,6 +312,8 @@ download verification.
Custom Fetch Scripts
^^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 3.2
+
When a data file must be fetched from one of the URL templates
specified in the ``ExternalData_URL_TEMPLATES`` variable, it is
normally downloaded using the :command:`file(DOWNLOAD)` command.
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 8bbaf5a38a..f0ce7d49cb 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -56,6 +56,8 @@ External Project Definition
(see *Logging Options* below).
``LOG_DIR <dir>``
+ .. versionadded:: 3.14
+
Directory in which to store the logs of each step.
``DOWNLOAD_DIR <dir>``
@@ -144,6 +146,9 @@ External Project Definition
is determined by inspecting the actual content rather than using logic
based on the file extension.
+ .. versionchanged:: 3.7
+ Multiple URLs are allowed.
+
``URL_HASH <algo>=<hashValue>``
Hash of the archive file to be downloaded. The argument should be of
the form ``<algo>=<hashValue>`` where ``algo`` can be any of the hashing
@@ -164,6 +169,8 @@ External Project Definition
of code internal to the ``ExternalProject`` module.
``DOWNLOAD_NO_EXTRACT <bool>``
+ .. versionadded:: 3.6
+
Allows the extraction part of the download step to be disabled by
passing a boolean true value for this option. If this option is not
given, the downloaded contents will be unpacked automatically if
@@ -180,15 +187,23 @@ External Project Definition
Maximum time allowed for file download operations.
``INACTIVITY_TIMEOUT <seconds>``
+ .. versionadded:: 3.19
+
Terminate the operation after a period of inactivity.
``HTTP_USERNAME <username>``
+ .. versionadded:: 3.7
+
Username for the download operation if authentication is required.
``HTTP_PASSWORD <password>``
+ .. versionadded:: 3.7
+
Password for the download operation if authentication is required.
``HTTP_HEADER <header1> [<header2>...]``
+ .. versionadded:: 3.7
+
Provides an arbitrary list of HTTP headers for the download operation.
This can be useful for accessing content in systems like AWS, etc.
@@ -201,6 +216,9 @@ External Project Definition
cannot be provided, this option can be an alternative verification
measure.
+ .. versionchanged:: 3.6
+ This option also applies to ``git clone`` invocations.
+
``TLS_CAINFO <file>``
Specify a custom certificate authority file to use if ``TLS_VERIFY``
is enabled. If this option is not specified, the value of the
@@ -208,6 +226,8 @@ External Project Definition
:command:`file(DOWNLOAD)`)
``NETRC <level>``
+ .. versionadded:: 3.11
+
Specify whether the ``.netrc`` file is to be used for operation.
If this option is not specified, the value of the ``CMAKE_NETRC``
variable will be used instead (see :command:`file(DOWNLOAD)`)
@@ -225,11 +245,16 @@ External Project Definition
is ignored.
``NETRC_FILE <file>``
+ .. versionadded:: 3.11
+
Specify an alternative ``.netrc`` file to the one in your home directory
if the ``NETRC`` level is ``OPTIONAL`` or ``REQUIRED``. If this option
is not specified, the value of the ``CMAKE_NETRC_FILE`` variable will
be used instead (see :command:`file(DOWNLOAD)`)
+ .. versionadded:: 3.1
+ Added support for `tbz2`, `.tar.xz`, `.txz`, and `.7z` extensions.
+
*Git*
NOTE: A git version of 1.6.5 or later is required if this download method
is used.
@@ -267,22 +292,30 @@ External Project Definition
``GIT_SUBMODULES <module>...``
Specific git submodules that should also be updated. If this option is
- not provided, all git submodules will be updated. When :policy:`CMP0097`
- is set to ``NEW`` if this value is set to an empty string then no submodules
- are initialized or updated.
+ not provided, all git submodules will be updated.
+
+ .. versionchanged:: 3.16
+ When :policy:`CMP0097` is set to ``NEW``, if this value is set
+ to an empty string then no submodules are initialized or updated.
``GIT_SUBMODULES_RECURSE <bool>``
+ .. versionadded:: 3.17
+
Specify whether git submodules (if any) should update recursively by
passing the ``--recursive`` flag to ``git submodule update``.
If not specified, the default is on.
``GIT_SHALLOW <bool>``
+ .. versionadded:: 3.6
+
When this option is enabled, the ``git clone`` operation will be given
the ``--depth 1`` option. This performs a shallow clone, which avoids
downloading the whole history and instead retrieves just the commit
denoted by the ``GIT_TAG`` option.
``GIT_PROGRESS <bool>``
+ .. versionadded:: 3.8
+
When enabled, this option instructs the ``git clone`` operation to
report its progress by passing it the ``--progress`` option. Without
this option, the clone step for large projects may appear to make the
@@ -292,12 +325,16 @@ External Project Definition
overly noisy if lots of external projects are used.
``GIT_CONFIG <option1> [<option2>...]``
+ .. versionadded:: 3.8
+
Specify a list of config options to pass to ``git clone``. Each option
listed will be transformed into its own ``--config <option>`` on the
``git clone`` command line, with each option required to be in the
form ``key=value``.
``GIT_REMOTE_UPDATE_STRATEGY <strategy>``
+ .. versionadded:: 3.18
+
When ``GIT_TAG`` refers to a remote branch, this option can be used to
specify how the update step behaves. The ``<strategy>`` must be one of
the following:
@@ -379,6 +416,8 @@ External Project Definition
:manual:`generator expressions <cmake-generator-expressions(7)>`.
``UPDATE_DISCONNECTED <bool>``
+ .. versionadded:: 3.2
+
When enabled, this option causes the update step to be skipped. It does
not, however, prevent the download step. The update step can still be
added as a step target (see :command:`ExternalProject_Add_StepTargets`)
@@ -436,6 +475,8 @@ External Project Definition
``CONFIGURE_COMMAND`` option.
``CMAKE_GENERATOR_PLATFORM <platform>``
+ .. versionadded:: 3.1
+
Pass a generator-specific platform name to the CMake command (see
:variable:`CMAKE_GENERATOR_PLATFORM`). It is an error to provide this
option without the ``CMAKE_GENERATOR`` option.
@@ -446,6 +487,8 @@ External Project Definition
option without the ``CMAKE_GENERATOR`` option.
``CMAKE_GENERATOR_INSTANCE <instance>``
+ .. versionadded:: 3.11
+
Pass a generator-specific instance selection to the CMake command (see
:variable:`CMAKE_GENERATOR_INSTANCE`). It is an error to provide this
option without the ``CMAKE_GENERATOR`` option.
@@ -454,8 +497,10 @@ External Project Definition
The specified arguments are passed to the ``cmake`` command line. They
can be any argument the ``cmake`` command understands, not just cache
values defined by ``-D...`` arguments (see also
- :manual:`CMake Options <cmake(1)>`). In addition, arguments may use
- :manual:`generator expressions <cmake-generator-expressions(7)>`.
+ :manual:`CMake Options <cmake(1)>`).
+
+ .. versionadded:: 3.3
+ Arguments may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
``CMAKE_CACHE_ARGS <arg>...``
This is an alternate way of specifying cache variables where command line
@@ -463,10 +508,14 @@ External Project Definition
the form ``-Dvar:STRING=value``, which are then transformed into
CMake :command:`set` commands with the ``FORCE`` option used. These
``set()`` commands are written to a pre-load script which is then applied
- using the :manual:`cmake -C <cmake(1)>` command line option. Arguments
- may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
+ using the :manual:`cmake -C <cmake(1)>` command line option.
+
+ .. versionadded:: 3.3
+ Arguments may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
``CMAKE_CACHE_DEFAULT_ARGS <arg>...``
+ .. versionadded:: 3.2
+
This is the same as the ``CMAKE_CACHE_ARGS`` option except the ``set()``
commands do not include the ``FORCE`` keyword. This means the values act
as initial defaults only and will not override any variables already set
@@ -474,20 +523,25 @@ External Project Definition
different behavior depending on whether the build starts from a fresh
build directory or re-uses previous build contents.
- If the CMake generator is the ``Green Hills MULTI`` and not overridden then
- the original project's settings for the GHS toolset and target system
- customization cache variables are propagated into the external project.
+ .. versionadded:: 3.15
+ If the CMake generator is the ``Green Hills MULTI`` and not overridden then
+ the original project's settings for the GHS toolset and target system
+ customization cache variables are propagated into the external project.
``SOURCE_SUBDIR <dir>``
+ .. versionadded:: 3.7
+
When no ``CONFIGURE_COMMAND`` option is specified, the configure step
assumes the external project has a ``CMakeLists.txt`` file at the top of
its source tree (i.e. in ``SOURCE_DIR``). The ``SOURCE_SUBDIR`` option
can be used to point to an alternative directory within the source tree
to use as the top of the CMake source tree instead. This must be a
relative path and it will be interpreted as being relative to
- ``SOURCE_DIR``. When ``BUILD_IN_SOURCE 1`` is specified, the
- ``BUILD_COMMAND`` is used to point to an alternative directory within the
- source tree.
+ ``SOURCE_DIR``.
+
+ .. versionadded:: 3.14
+ When ``BUILD_IN_SOURCE`` option is enabled, the ``BUILD_COMMAND``
+ is used to point to an alternative directory within the source tree.
**Build Step Options:**
If the configure step assumed the external project uses CMake as its build
@@ -524,6 +578,8 @@ External Project Definition
developers might modify the sources in ``SOURCE_DIR``).
``BUILD_BYPRODUCTS <file>...``
+ .. versionadded:: 3.2
+
Specifies files that will be generated by the build command but which
might or might not have their modification time updated by subsequent
builds. These ultimately get passed through as ``BYPRODUCTS`` to the
@@ -578,6 +634,8 @@ External Project Definition
``TEST_AFTER_INSTALL`` are enabled, the latter is silently ignored.
``TEST_EXCLUDE_FROM_MAIN <bool>``
+ .. versionadded:: 3.2
+
If enabled, the main build's default ALL target will not depend on the
test step. This can be a useful way of ensuring the test step is defined
but only gets invoked when manually requested.
@@ -597,6 +655,8 @@ External Project Definition
When enabled, the output of the update step is logged to files.
``LOG_PATCH <bool>``
+ .. versionadded:: 3.14
+
When enabled, the output of the patch step is logged to files.
``LOG_CONFIGURE <bool>``
@@ -612,10 +672,14 @@ External Project Definition
When enabled, the output of the test step is logged to files.
``LOG_MERGED_STDOUTERR <bool>``
+ .. versionadded:: 3.14
+
When enabled, stdout and stderr will be merged for any step whose
output is being logged to files.
``LOG_OUTPUT_ON_FAILURE <bool>``
+ .. versionadded:: 3.14
+
This option only has an effect if at least one of the other ``LOG_<step>``
options is enabled. If an error occurs for a step which has logging to
file enabled, that step's output will be printed to the console if
@@ -624,6 +688,8 @@ External Project Definition
console.
**Terminal Access Options:**
+ .. versionadded:: 3.4
+
Steps can be given direct access to the terminal in some cases. Giving a
step access to the terminal may allow it to receive terminal input if
required, such as for authentication details not provided by other options.
@@ -673,8 +739,9 @@ External Project Definition
discussion of the effects of this option.
``INDEPENDENT_STEP_TARGETS <step-target>...``
- Deprecated. This is allowed only if policy :policy:`CMP0114` is not set
- to ``NEW``.
+ .. deprecated:: 3.19
+ This is allowed only if policy :policy:`CMP0114` is not set to ``NEW``.
+
Generates custom targets for the specified steps and prevent these targets
from having the usual dependencies applied to them. If this option is not
specified, the default value is taken from the
@@ -780,6 +847,8 @@ control needed to implement such step-level capabilities.
Files on which this custom step depends.
``INDEPENDENT <bool>``
+ .. versionadded:: 3.19
+
Specifies whether this step is independent of the external dependencies
specified by the :command:`ExternalProject_Add`'s ``DEPENDS`` option.
The default is ``FALSE``. Steps marked as independent may depend only
@@ -795,6 +864,8 @@ control needed to implement such step-level capabilities.
on the external targets, but may depend on targets for other steps.
``BYPRODUCTS <file>...``
+ .. versionadded:: 3.2
+
Files that will be generated by this custom step but which might or might
not have their modification time updated by subsequent builds. This list of
files will ultimately be passed through as the ``BYPRODUCTS`` option to the
@@ -831,6 +902,12 @@ control needed to implement such step-level capabilities.
corresponding property values defined in the original call to
:command:`ExternalProject_Add`.
+ .. versionadded:: 3.3
+ Token replacement is extended to byproducts.
+
+ .. versionadded:: 3.11
+ The ``<DOWNLOAD_DIR>`` substitution token.
+
.. command:: ExternalProject_Add_StepTargets
The ``ExternalProject_Add_StepTargets()`` function generates targets for the
@@ -868,15 +945,16 @@ control needed to implement such step-level capabilities.
can save having to repeatedly specify the same set of step targets when
multiple external projects are being defined.
- If :policy:`CMP0114` is set to ``NEW``, step targets are fully responsible
- for holding the custom commands implementing their steps. The primary target
- created by ``ExternalProject_Add`` depends on the step targets, and the
- step targets depend on each other. The target-level dependencies match
- the file-level dependencies used by the custom commands for each step.
- The targets for steps created with :command:`ExternalProject_Add_Step`'s
- ``INDEPENDENT`` option do not depend on the external targets specified
- by :command:`ExternalProject_Add`'s ``DEPENDS`` option. The predefined
- steps ``mkdir``, ``download``, ``update``, and ``patch`` are independent.
+ .. versionadded:: 3.19
+ If :policy:`CMP0114` is set to ``NEW``, step targets are fully responsible
+ for holding the custom commands implementing their steps. The primary target
+ created by ``ExternalProject_Add`` depends on the step targets, and the
+ step targets depend on each other. The target-level dependencies match
+ the file-level dependencies used by the custom commands for each step.
+ The targets for steps created with :command:`ExternalProject_Add_Step`'s
+ ``INDEPENDENT`` option do not depend on the external targets specified
+ by :command:`ExternalProject_Add`'s ``DEPENDS`` option. The predefined
+ steps ``mkdir``, ``download``, ``update``, and ``patch`` are independent.
If :policy:`CMP0114` is not ``NEW``, the following deprecated behavior
is available:
@@ -901,6 +979,8 @@ control needed to implement such step-level capabilities.
.. command:: ExternalProject_Add_StepDependencies
+ .. versionadded:: 3.2
+
The ``ExternalProject_Add_StepDependencies()`` function can be used to add
dependencies to a step. The dependencies added must be targets CMake already
knows about (these can be ordinary executable or library targets, custom
diff --git a/Modules/FeatureSummary.cmake b/Modules/FeatureSummary.cmake
index 4a3e83af31..77c66d14af 100644
--- a/Modules/FeatureSummary.cmake
+++ b/Modules/FeatureSummary.cmake
@@ -66,6 +66,8 @@ The default value for this global property is ``OPTIONAL``.
.. variable:: FeatureSummary_<TYPE>_DESCRIPTION
+.. versionadded:: 3.9
+
The global property :variable:`FeatureSummary_<TYPE>_DESCRIPTION` can be defined
for each type to replace the type name with the specified string whenever the
package type is used in an output string.
@@ -242,12 +244,13 @@ endfunction()
``<TYPE>_PACKAGES_NOT_FOUND``
only those packages which have not been found which have the type <TYPE>
- With the exception of the ``ALL`` value, these values can be combined
- in order to customize the output. For example:
+ .. versionchanged:: 3.1
+ With the exception of the ``ALL`` value, these values can be combined
+ in order to customize the output. For example:
- .. code-block:: cmake
+ .. code-block:: cmake
- feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
+ feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
If a ``FILENAME`` is given, the information is printed into this file. If
``APPEND`` is used, it is appended to this file, otherwise the file is
@@ -268,14 +271,18 @@ endfunction()
The default value for the :variable:`FeatureSummary_REQUIRED_PKG_TYPES` global
property is ``REQUIRED``.
+ .. versionadded:: 3.9
+ The ``DEFAULT_DESCRIPTION`` option.
+
The :variable:`FeatureSummary_DEFAULT_PKG_TYPE` global property can be
modified to change the default package type assigned when not explicitly
assigned by the user.
- If the ``QUIET_ON_EMPTY`` option is used, if only one type of package was
- requested, and no packages belonging to that category were found, then no
- output (including the ``DESCRIPTION``) is printed or added to the ``VAR``
- variable.
+ .. versionadded:: 3.8
+ If the ``QUIET_ON_EMPTY`` option is used, if only one type of package was
+ requested, and no packages belonging to that category were found, then no
+ output (including the ``DESCRIPTION``) is printed or added to the ``VAR``
+ variable.
Example 1, append everything to a file:
@@ -617,6 +624,9 @@ endfunction()
be displayed using ``feature_summary()`` for ``ENABLED_FEATURES`` and
``DISABLED_FEATURES`` respectively.
+ .. versionchanged:: 3.8
+ ``<enabled>`` can be a list of conditions.
+
Example for setting the info for a feature:
.. code-block:: cmake
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake
index 40cc362142..8fabcdc9e0 100644
--- a/Modules/FetchContent.cmake
+++ b/Modules/FetchContent.cmake
@@ -77,6 +77,9 @@ operation and would not normally be the way the module is used, but it is
sometimes useful as part of implementing some higher level feature or to
populate some content in CMake's script mode.
+.. versionchanged:: 3.14
+ ``FetchContent`` commands can access the terminal. This is necessary
+ for password prompts and real-time progress displays to work.
Commands
^^^^^^^^
@@ -371,6 +374,8 @@ is simpler and provides additional features over the pattern above.
:variable:`CMAKE_MAKE_PROGRAM` variables will need to be set appropriately
on the command line invoking the script.
+ .. versionadded:: 3.18
+ Added support for ``DOWNLOAD_NO_EXTRACT`` and ``SOURCE_SUBDIR`` options.
.. command:: FetchContent_GetProperties
@@ -416,6 +421,8 @@ is simpler and provides additional features over the pattern above.
FetchContent_MakeAvailable( <name1> [<name2>...] )
+ .. versionadded:: 3.14
+
This command implements the common pattern typically needed for most
dependencies. It iterates over each of the named dependencies in turn
and for each one it loosely follows the
diff --git a/Modules/FindALSA.cmake b/Modules/FindALSA.cmake
index 88e2681eb5..627866a4d0 100644
--- a/Modules/FindALSA.cmake
+++ b/Modules/FindALSA.cmake
@@ -12,6 +12,8 @@ Find the alsa libraries (``asound``)
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if
ALSA has been found.
diff --git a/Modules/FindArmadillo.cmake b/Modules/FindArmadillo.cmake
index c8a31a0386..f959356b27 100644
--- a/Modules/FindArmadillo.cmake
+++ b/Modules/FindArmadillo.cmake
@@ -8,6 +8,9 @@ FindArmadillo
Find the Armadillo C++ library.
Armadillo is a library for linear algebra & scientific computing.
+.. versionadded:: 3.18
+ Support for linking wrapped libraries directly (``ARMA_DONT_USE_WRAPPER``).
+
Using Armadillo:
::
diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake
index 1e1a5a3b41..3515bf0ddd 100644
--- a/Modules/FindBISON.cmake
+++ b/Modules/FindBISON.cmake
@@ -35,21 +35,31 @@ the path to a yacc file. ``<CodeOutput>`` is the name of the source file
generated by bison. A header file is also be generated, and contains
the token list.
+.. versionchanged:: 3.14
+ When :policy:`CMP0088` is set to ``NEW``, ``bison`` runs in the
+ :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
+
The options are:
``COMPILE_FLAGS <flags>``
Specify flags to be added to the ``bison`` command line.
``DEFINES_FILE <file>``
+ .. versionadded:: 3.4
+
Specify a non-default header ``<file>`` to be generated by ``bison``.
``VERBOSE [<file>]``
Tell ``bison`` to write a report file of the grammar and parser.
- If ``<file>`` is given, it specifies path the report file is copied to.
- ``[<file>]`` is left for backward compatibility of this module.
- Use ``VERBOSE REPORT_FILE <file>``.
+
+ .. deprecated:: 3.7
+ If ``<file>`` is given, it specifies path the report file is copied to.
+ ``[<file>]`` is left for backward compatibility of this module.
+ Use ``VERBOSE REPORT_FILE <file>``.
``REPORT_FILE <file>``
+ .. versionadded:: 3.7
+
Specify a non-default report ``<file>``, if generated.
The macro defines the following variables:
diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake
index 715049bbab..93c0a1123c 100644
--- a/Modules/FindBLAS.cmake
+++ b/Modules/FindBLAS.cmake
@@ -55,16 +55,39 @@ The following variables may be set to influence this module's behavior:
* ``Arm_ilp64_mp``
* ``Generic``
+ .. versionadded:: 3.6
+ ``OpenBLAS`` support.
+
+ .. versionadded:: 3.11
+ ``FLAME`` support.
+
+ .. versionadded:: 3.13
+ Added ILP64 MKL variants (``Intel10_64ilp``, ``Intel10_64ilp_seq``).
+
+ .. versionadded:: 3.17
+ Added single dynamic library MKL variant (``Intel10_64_dyn``).
+
+ .. versionadded:: 3.18
+ Arm Performance Libraries support (``Arm``, ``Arm_mp``, ``Arm_ilp64``,
+ ``Arm_ilp64_mp``).
+
+ .. versionadded:: 3.19
+ ``FlexiBLAS`` support.
+
``BLA_F95``
if ``ON`` tries to find the BLAS95 interfaces
``BLA_PREFER_PKGCONFIG``
+ .. versionadded:: 3.11
+
if set ``pkg-config`` will be used to search for a BLAS library first
and if one is found that is preferred
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.18
+
This module defines the following :prop_tgt:`IMPORTED` target:
``BLAS::BLAS``
@@ -104,10 +127,13 @@ This module defines the following variables:
Hints
^^^^^
-Set the ``MKLROOT`` environment variable to a directory that contains an MKL
-installation, or add the directory to the dynamic library loader environment
-variable for your platform (``LIB``, ``DYLD_LIBRARY_PATH`` or
-``LD_LIBRARY_PATH``).
+``MKLROOT``
+ .. versionadded:: 3.15
+
+ Set this environment variable to a directory that contains an MKL
+ installation, or add the directory to the dynamic library loader environment
+ variable for your platform (``LIB``, ``DYLD_LIBRARY_PATH`` or
+ ``LD_LIBRARY_PATH``).
#]=======================================================================]
diff --git a/Modules/FindBZip2.cmake b/Modules/FindBZip2.cmake
index 5704d1d83c..355c4bb96b 100644
--- a/Modules/FindBZip2.cmake
+++ b/Modules/FindBZip2.cmake
@@ -10,6 +10,8 @@ Try to find BZip2
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if
BZip2 has been found.
@@ -21,7 +23,8 @@ This module defines the following variables:
``BZIP2_FOUND``
system has BZip2
``BZIP2_INCLUDE_DIRS``
- the BZip2 include directories
+ .. versionadded:: 3.12
+ the BZip2 include directories
``BZIP2_LIBRARIES``
Link these to use BZip2
``BZIP2_NEED_PREFIX``
diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake
index 00e4ff1d21..e41e8643f4 100644
--- a/Modules/FindBoost.cmake
+++ b/Modules/FindBoost.cmake
@@ -7,7 +7,9 @@ FindBoost
Find Boost include dirs and libraries
-Use this module by invoking find_package with the form::
+Use this module by invoking :command:`find_package` with the form:
+
+.. code-block:: cmake
find_package(Boost
[version] [EXACT] # Minimum or EXACT version e.g. 1.67.0
@@ -20,97 +22,134 @@ Use this module by invoking find_package with the form::
This module finds headers and requested component libraries OR a CMake
package configuration file provided by a "Boost CMake" build. For the
-latter case skip to the "Boost CMake" section below. For the former
-case results are reported in variables::
-
- Boost_FOUND - True if headers and requested libraries were found
- Boost_INCLUDE_DIRS - Boost include directories
- Boost_LIBRARY_DIRS - Link directories for Boost libraries
- Boost_LIBRARIES - Boost component libraries to be linked
- Boost_<C>_FOUND - True if component <C> was found (<C> is upper-case)
- Boost_<C>_LIBRARY - Libraries to link for component <C> (may include
- target_link_libraries debug/optimized keywords)
- Boost_VERSION_MACRO - BOOST_VERSION value from boost/version.hpp
- Boost_VERSION_STRING - Boost version number in x.y.z format
- Boost_VERSION - if CMP0093 NEW => same as Boost_VERSION_STRING
- if CMP0093 OLD or unset => same as Boost_VERSION_MACRO
- Boost_LIB_VERSION - Version string appended to library filenames
- Boost_VERSION_MAJOR - Boost major version number (X in X.y.z)
- alias: Boost_MAJOR_VERSION
- Boost_VERSION_MINOR - Boost minor version number (Y in x.Y.z)
- alias: Boost_MINOR_VERSION
- Boost_VERSION_PATCH - Boost subminor version number (Z in x.y.Z)
- alias: Boost_SUBMINOR_VERSION
- Boost_VERSION_COUNT - Amount of version components (3)
- Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
- - Pass to add_definitions() to have diagnostic
- information about Boost's automatic linking
- displayed during compilation
-
-Note that Boost Python components require a Python version suffix
-(Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the
-versions built against Python 3.6 and 2.7, respectively. This also
-applies to additional components using Python including
-``mpi_python`` and ``numpy``. Earlier Boost releases may use
-distribution-specific suffixes such as ``2``, ``3`` or ``2.7``.
-These may also be used as suffixes, but note that they are not
-portable.
-
-This module reads hints about search locations from variables::
-
- BOOST_ROOT - Preferred installation prefix
- (or BOOSTROOT)
- BOOST_INCLUDEDIR - Preferred include directory e.g. <prefix>/include
- BOOST_LIBRARYDIR - Preferred library directory e.g. <prefix>/lib
- Boost_NO_SYSTEM_PATHS - Set to ON to disable searching in locations not
- specified by these hint variables. Default is OFF.
- Boost_ADDITIONAL_VERSIONS
- - List of Boost versions not known to this module
- (Boost install locations may contain the version)
-
-and saves search results persistently in CMake cache entries::
-
- Boost_INCLUDE_DIR - Directory containing Boost headers
- Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries
- Boost_LIBRARY_DIR_DEBUG - Directory containing debug Boost libraries
- Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant
- Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
-
-The following :prop_tgt:`IMPORTED` targets are also defined::
-
- Boost::headers - Target for header-only dependencies
- (Boost include directory)
- alias: Boost::boost
- Boost::<C> - Target for specific component dependency
- (shared or static library); <C> is lower-
- case
- Boost::diagnostic_definitions - interface target to enable diagnostic
- information about Boost's automatic linking
- during compilation (adds BOOST_LIB_DIAGNOSTIC)
- Boost::disable_autolinking - interface target to disable automatic
- linking with MSVC (adds BOOST_ALL_NO_LIB)
- Boost::dynamic_linking - interface target to enable dynamic linking
- linking with MSVC (adds BOOST_ALL_DYN_LINK)
+latter case skip to the :ref:`Boost CMake` section below.
-Implicit dependencies such as ``Boost::filesystem`` requiring
-``Boost::system`` will be automatically detected and satisfied, even
-if system is not specified when using :command:`find_package` and if
-``Boost::system`` is not added to :command:`target_link_libraries`. If using
-``Boost::thread``, then ``Threads::Threads`` will also be added automatically.
+.. versionadded:: 3.7
+ ``bzip2`` and ``zlib`` components (Windows only).
-It is important to note that the imported targets behave differently
-than variables created by this module: multiple calls to
-:command:`find_package(Boost)` in the same directory or sub-directories with
-different options (e.g. static or shared) will not override the
-values of the targets created by the first call.
+.. versionadded:: 3.11
+ The ``OPTIONAL_COMPONENTS`` option.
+
+.. versionadded:: 3.13
+ ``stacktrace_*`` components.
+
+.. versionadded:: 3.19
+ ``bzip2`` and ``zlib`` components on all platforms.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``Boost_FOUND``
+ True if headers and requested libraries were found.
+
+``Boost_INCLUDE_DIRS``
+ Boost include directories.
+
+``Boost_LIBRARY_DIRS``
+ Link directories for Boost libraries.
+
+``Boost_LIBRARIES``
+ Boost component libraries to be linked.
+
+``Boost_<COMPONENT>_FOUND``
+ True if component ``<COMPONENT>`` was found (``<COMPONENT>`` name is upper-case).
+
+``Boost_<COMPONENT>_LIBRARY``
+ Libraries to link for component ``<COMPONENT>`` (may include
+ :command:`target_link_libraries` debug/optimized keywords).
+
+``Boost_VERSION_MACRO``
+ ``BOOST_VERSION`` value from ``boost/version.hpp``.
+
+``Boost_VERSION_STRING``
+ Boost version number in ``X.Y.Z`` format.
+
+``Boost_VERSION``
+ Boost version number in ``X.Y.Z`` format (same as ``Boost_VERSION_STRING``).
+
+ .. versionchanged:: 3.15
+ In previous CMake versions, this variable used the raw version string
+ from the Boost header (same as ``Boost_VERSION_MACRO``).
+ See policy :policy:`CMP0093`.
+
+``Boost_LIB_VERSION``
+ Version string appended to library filenames.
+
+``Boost_VERSION_MAJOR``, ``Boost_MAJOR_VERSION``
+ Boost major version number (``X`` in ``X.Y.Z``).
+
+``Boost_VERSION_MINOR``, ``Boost_MINOR_VERSION``
+ Boost minor version number (``Y`` in ``X.Y.Z``).
+
+``Boost_VERSION_PATCH``, ``Boost_SUBMINOR_VERSION``
+ Boost subminor version number (``Z`` in ``X.Y.Z``).
+
+``Boost_VERSION_COUNT``
+ Amount of version components (3).
+
+``Boost_LIB_DIAGNOSTIC_DEFINITIONS`` (Windows-specific)
+ Pass to :command:`add_definitions` to have diagnostic
+ information about Boost's automatic linking
+ displayed during compilation
+
+.. versionadded:: 3.15
+ The ``Boost_VERSION_<PART>`` variables.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+Search results are saved persistently in CMake cache entries:
+
+``Boost_INCLUDE_DIR``
+ Directory containing Boost headers.
+
+``Boost_LIBRARY_DIR_RELEASE``
+ Directory containing release Boost libraries.
+
+``Boost_LIBRARY_DIR_DEBUG``
+ Directory containing debug Boost libraries.
+
+``Boost_<COMPONENT>_LIBRARY_DEBUG``
+ Component ``<COMPONENT>`` library debug variant.
+
+``Boost_<COMPONENT>_LIBRARY_RELEASE``
+ Component ``<COMPONENT>`` library release variant.
+
+.. versionadded:: 3.3
+ Per-configuration variables ``Boost_LIBRARY_DIR_RELEASE`` and
+ ``Boost_LIBRARY_DIR_DEBUG``.
+
+Hints
+^^^^^
+
+This module reads hints about search locations from variables:
+
+``BOOST_ROOT``, ``BOOSTROOT``
+ Preferred installation prefix.
+
+``BOOST_INCLUDEDIR``
+ Preferred include directory e.g. ``<prefix>/include``.
+
+``BOOST_LIBRARYDIR``
+ Preferred library directory e.g. ``<prefix>/lib``.
+
+``Boost_NO_SYSTEM_PATHS``
+ Set to ``ON`` to disable searching in locations not
+ specified by these hint variables. Default is ``OFF``.
+
+``Boost_ADDITIONAL_VERSIONS``
+ List of Boost versions not known to this module.
+ (Boost install locations may contain the version).
Users may set these hints or results as ``CACHE`` entries. Projects
should not read these entries directly but instead use the above
result variables. Note that some hint names start in upper-case
-"BOOST". One may specify these as environment variables if they are
+``BOOST``. One may specify these as environment variables if they are
not specified as CMake variables or cache entries.
-This module first searches for the ``Boost`` header files using the above
+This module first searches for the Boost header files using the above
hint variables (excluding ``BOOST_LIBRARYDIR``) and saves the result in
``Boost_INCLUDE_DIR``. Then it searches for requested component libraries
using the above hints (excluding ``BOOST_INCLUDEDIR`` and
@@ -118,83 +157,164 @@ using the above hints (excluding ``BOOST_INCLUDEDIR`` and
and the library name configuration settings below. It saves the
library directories in ``Boost_LIBRARY_DIR_DEBUG`` and
``Boost_LIBRARY_DIR_RELEASE`` and individual library
-locations in ``Boost_<C>_LIBRARY_DEBUG`` and ``Boost_<C>_LIBRARY_RELEASE``.
+locations in ``Boost_<COMPONENT>_LIBRARY_DEBUG`` and ``Boost_<COMPONENT>_LIBRARY_RELEASE``.
When one changes settings used by previous searches in the same build
tree (excluding environment variables) this module discards previous
search results affected by the changes and searches again.
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.5
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``Boost::boost``
+ Target for header-only dependencies. (Boost include directory).
+
+``Boost::headers``
+ .. versionadded:: 3.15
+ Alias for ``Boost::boost``.
+
+``Boost::<component>``
+ Target for specific component dependency (shared or static library);
+ ``<component>`` name is lower-case.
+
+``Boost::diagnostic_definitions``
+ Interface target to enable diagnostic information about Boost's automatic
+ linking during compilation (adds ``-DBOOST_LIB_DIAGNOSTIC``).
+
+``Boost::disable_autolinking``
+ Interface target to disable automatic linking with MSVC
+ (adds ``-DBOOST_ALL_NO_LIB``).
+
+``Boost::dynamic_linking``
+ Interface target to enable dynamic linking linking with MSVC
+ (adds ``-DBOOST_ALL_DYN_LINK``).
+
+Implicit dependencies such as ``Boost::filesystem`` requiring
+``Boost::system`` will be automatically detected and satisfied, even
+if system is not specified when using :command:`find_package` and if
+``Boost::system`` is not added to :command:`target_link_libraries`. If using
+``Boost::thread``, then ``Threads::Threads`` will also be added automatically.
+
+It is important to note that the imported targets behave differently
+than variables created by this module: multiple calls to
+:command:`find_package(Boost)` in the same directory or sub-directories with
+different options (e.g. static or shared) will not override the
+values of the targets created by the first call.
+
+Other Variables
+^^^^^^^^^^^^^^^
+
Boost libraries come in many variants encoded in their file name.
Users or projects may tell this module which variant to find by
-setting variables::
-
- Boost_USE_DEBUG_LIBS - Set to ON or OFF to specify whether to search
- and use the debug libraries. Default is ON.
- Boost_USE_RELEASE_LIBS - Set to ON or OFF to specify whether to search
- and use the release libraries. Default is ON.
- Boost_USE_MULTITHREADED - Set to OFF to use the non-multithreaded
- libraries ('mt' tag). Default is ON.
- Boost_USE_STATIC_LIBS - Set to ON to force the use of the static
- libraries. Default is OFF.
- Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use
- libraries linked statically to the C++ runtime
- ('s' tag). Default is platform dependent.
- Boost_USE_DEBUG_RUNTIME - Set to ON or OFF to specify whether to use
- libraries linked to the MS debug C++ runtime
- ('g' tag). Default is ON.
- Boost_USE_DEBUG_PYTHON - Set to ON to use libraries compiled with a
- debug Python build ('y' tag). Default is OFF.
- Boost_USE_STLPORT - Set to ON to use libraries compiled with
- STLPort ('p' tag). Default is OFF.
- Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
- - Set to ON to use libraries compiled with
- STLPort deprecated "native iostreams"
- ('n' tag). Default is OFF.
- Boost_COMPILER - Set to the compiler-specific library suffix
- (e.g. "-gcc43"). Default is auto-computed
- for the C++ compiler in use. A list may be
- used if multiple compatible suffixes should
- be tested for, in decreasing order of
- preference.
- Boost_LIB_PREFIX - Set to the platform-specific library name
- prefix (e.g. "lib") used by Boost static libs.
- This is needed only on platforms where CMake
- does not know the prefix by default.
- Boost_ARCHITECTURE - Set to the architecture-specific library suffix
- (e.g. "-x64"). Default is auto-computed for the
- C++ compiler in use.
- Boost_THREADAPI - Suffix for "thread" component library name,
- such as "pthread" or "win32". Names with
- and without this suffix will both be tried.
- Boost_NAMESPACE - Alternate namespace used to build boost with
- e.g. if set to "myboost", will search for
- myboost_thread instead of boost_thread.
-
-Other variables one may set to control this module are::
-
- Boost_DEBUG - Set to ON to enable debug output from FindBoost.
- Please enable this before filing any bug report.
- Boost_REALPATH - Set to ON to resolve symlinks for discovered
- libraries to assist with packaging. For example,
- the "system" component library may be resolved to
- "/usr/lib/libboost_system.so.1.67.0" instead of
- "/usr/lib/libboost_system.so". This does not
- affect linking and should not be enabled unless
- the user needs this information.
- Boost_LIBRARY_DIR - Default value for Boost_LIBRARY_DIR_RELEASE and
- Boost_LIBRARY_DIR_DEBUG.
+setting variables:
+
+``Boost_USE_DEBUG_LIBS``
+ .. versionadded:: 3.10
+
+ Set to ``ON`` or ``OFF`` to specify whether to search and use the debug
+ libraries. Default is ``ON``.
+
+``Boost_USE_RELEASE_LIBS``
+ .. versionadded:: 3.10
+
+ Set to ``ON`` or ``OFF`` to specify whether to search and use the release
+ libraries. Default is ``ON``.
+
+``Boost_USE_MULTITHREADED``
+ Set to OFF to use the non-multithreaded libraries ("mt" tag). Default is
+ ``ON``.
+
+``Boost_USE_STATIC_LIBS``
+ Set to ON to force the use of the static libraries. Default is ``OFF``.
+
+``Boost_USE_STATIC_RUNTIME``
+ Set to ``ON`` or ``OFF`` to specify whether to use libraries linked
+ statically to the C++ runtime ("s" tag). Default is platform dependent.
+
+``Boost_USE_DEBUG_RUNTIME``
+ Set to ``ON`` or ``OFF`` to specify whether to use libraries linked to the
+ MS debug C++ runtime ("g" tag). Default is ``ON``.
+
+``Boost_USE_DEBUG_PYTHON``
+ Set to ``ON`` to use libraries compiled with a debug Python build ("y"
+ tag). Default is ``OFF``.
+
+``Boost_USE_STLPORT``
+ Set to ``ON`` to use libraries compiled with STLPort ("p" tag). Default is
+ ``OFF``.
+
+``Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS``
+ Set to ON to use libraries compiled with STLPort deprecated "native
+ iostreams" ("n" tag). Default is ``OFF``.
+
+``Boost_COMPILER``
+ Set to the compiler-specific library suffix (e.g. ``-gcc43``). Default is
+ auto-computed for the C++ compiler in use.
+
+ .. versionchanged:: 3.9
+ A list may be used if multiple compatible suffixes should be tested for,
+ in decreasing order of preference.
+
+``Boost_LIB_PREFIX``
+ .. versionadded:: 3.18
+
+ Set to the platform-specific library name prefix (e.g. ``lib``) used by
+ Boost static libs. This is needed only on platforms where CMake does not
+ know the prefix by default.
+
+``Boost_ARCHITECTURE``
+ .. versionadded:: 3.13
+
+ Set to the architecture-specific library suffix (e.g. ``-x64``).
+ Default is auto-computed for the C++ compiler in use.
+
+``Boost_THREADAPI``
+ Suffix for ``thread`` component library name, such as ``pthread`` or
+ ``win32``. Names with and without this suffix will both be tried.
+
+``Boost_NAMESPACE``
+ Alternate namespace used to build boost with e.g. if set to ``myboost``,
+ will search for ``myboost_thread`` instead of ``boost_thread``.
+
+Other variables one may set to control this module are:
+
+``Boost_DEBUG``
+ Set to ``ON`` to enable debug output from ``FindBoost``.
+ Please enable this before filing any bug report.
+
+``Boost_REALPATH``
+ Set to ``ON`` to resolve symlinks for discovered libraries to assist with
+ packaging. For example, the "system" component library may be resolved to
+ ``/usr/lib/libboost_system.so.1.67.0`` instead of
+ ``/usr/lib/libboost_system.so``. This does not affect linking and should
+ not be enabled unless the user needs this information.
+
+``Boost_LIBRARY_DIR``
+ Default value for ``Boost_LIBRARY_DIR_RELEASE`` and
+ ``Boost_LIBRARY_DIR_DEBUG``.
On Visual Studio and Borland compilers Boost headers request automatic
linking to corresponding libraries. This requires matching libraries
to be linked explicitly or available in the link library search path.
In this case setting ``Boost_USE_STATIC_LIBS`` to ``OFF`` may not achieve
dynamic linking. Boost automatic linking typically requests static
-libraries with a few exceptions (such as ``Boost.Python``). Use::
+libraries with a few exceptions (such as ``Boost.Python``). Use:
+
+.. code-block:: cmake
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
to ask Boost to report information about automatic linking requests.
-Example to find Boost headers only::
+Examples
+^^^^^^^^
+
+Find Boost headers only:
+
+.. code-block:: cmake
find_package(Boost 1.36.0)
if(Boost_FOUND)
@@ -202,7 +322,9 @@ Example to find Boost headers only::
add_executable(foo foo.cc)
endif()
-Example to find Boost libraries and use imported targets::
+Find Boost libraries and use imported targets:
+
+.. code-block:: cmake
find_package(Boost 1.56 REQUIRED COMPONENTS
date_time filesystem iostreams)
@@ -210,17 +332,21 @@ Example to find Boost libraries and use imported targets::
target_link_libraries(foo Boost::date_time Boost::filesystem
Boost::iostreams)
-Example to find Boost Python 3.6 libraries and use imported targets::
+Find Boost Python 3.6 libraries and use imported targets:
+
+.. code-block:: cmake
find_package(Boost 1.67 REQUIRED COMPONENTS
python36 numpy36)
add_executable(foo foo.cc)
target_link_libraries(foo Boost::python36 Boost::numpy36)
-Example to find Boost headers and some *static* (release only) libraries::
+Find Boost headers and some *static* (release only) libraries:
+
+.. code-block:: cmake
set(Boost_USE_STATIC_LIBS ON) # only find static libs
- set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and
+ set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and
set(Boost_USE_RELEASE_LIBS ON) # only find release libs
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
@@ -231,6 +357,8 @@ Example to find Boost headers and some *static* (release only) libraries::
target_link_libraries(foo ${Boost_LIBRARIES})
endif()
+.. _`Boost CMake`:
+
Boost CMake
^^^^^^^^^^^
@@ -238,7 +366,7 @@ If Boost was built using the boost-cmake project or from Boost 1.70.0 on
it provides a package configuration file for use with find_package's config mode.
This module looks for the package configuration file called
``BoostConfig.cmake`` or ``boost-config.cmake`` and stores the result in
-``CACHE`` entry "Boost_DIR". If found, the package configuration file is loaded
+``CACHE`` entry ``Boost_DIR``. If found, the package configuration file is loaded
and this module returns with no further action. See documentation of
the Boost CMake package configuration for details on what it provides.
diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake
index f04f571274..6daf81dcbb 100644
--- a/Modules/FindCUDA.cmake
+++ b/Modules/FindCUDA.cmake
@@ -4,12 +4,6 @@ FindCUDA
.. deprecated:: 3.10
- Superseded by first-class support for the CUDA language in CMake.
- Superseded by the :module:`FindCUDAToolkit` for CUDA toolkit libraries.
-
-Replacement
-^^^^^^^^^^^
-
It is no longer necessary to use this module or call ``find_package(CUDA)``
for compiling CUDA code. Instead, list ``CUDA`` among the languages named
in the top-level call to the :command:`project` command, or call the
@@ -17,9 +11,10 @@ in the top-level call to the :command:`project` command, or call the
Then one can add CUDA (``.cu``) sources to programs directly
in calls to :command:`add_library` and :command:`add_executable`.
-To find and use the CUDA toolkit libraries the :module:`FindCUDAToolkit`
-module has superseded this module. It works whether or not the ``CUDA``
-language is enabled.
+.. versionadded:: 3.17
+ To find and use the CUDA toolkit libraries the :module:`FindCUDAToolkit`
+ module has superseded this module. It works whether or not the ``CUDA``
+ language is enabled.
Documentation of Deprecated Usage
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -30,6 +25,9 @@ This script locates the NVIDIA CUDA C tools. It should work on Linux,
Windows, and macOS and should be reasonably up to date with CUDA C
releases.
+.. versionadded:: 3.19
+ QNX support.
+
This script makes use of the standard :command:`find_package` arguments of
``<VERSION>``, ``REQUIRED`` and ``QUIET``. ``CUDA_FOUND`` will report if an
acceptable version of CUDA was found.
@@ -50,342 +48,476 @@ location. In newer versions of the toolkit the CUDA library is
included with the graphics driver -- be sure that the driver version
matches what is needed by the CUDA runtime version.
+Input Variables
+"""""""""""""""
+
The following variables affect the behavior of the macros in the
script (in alphabetical order). Note that any of these flags can be
changed multiple times in the same directory before calling
-``CUDA_ADD_EXECUTABLE``, ``CUDA_ADD_LIBRARY``, ``CUDA_COMPILE``,
-``CUDA_COMPILE_PTX``, ``CUDA_COMPILE_FATBIN``, ``CUDA_COMPILE_CUBIN``
-or ``CUDA_WRAP_SRCS``::
-
- CUDA_64_BIT_DEVICE_CODE (Default matches host bit size)
- -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code.
- Note that making this different from the host code when generating object
- or C files from CUDA code just won't work, because size_t gets defined by
- nvcc in the generated source. If you compile to PTX and then load the
- file yourself, you can mix bit sizes between device and host.
-
- CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON)
- -- Set to ON if you want the custom build rule to be attached to the source
- file in Visual Studio. Turn OFF if you add the same cuda file to multiple
- targets.
-
- This allows the user to build the target from the CUDA file; however, bad
- things can happen if the CUDA source file is added to multiple targets.
- When performing parallel builds it is possible for the custom build
- command to be run more than once and in parallel causing cryptic build
- errors. VS runs the rules for every source file in the target, and a
- source can have only one rule no matter how many projects it is added to.
- When the rule is run from multiple targets race conditions can occur on
- the generated file. Eventually everything will get built, but if the user
- is unaware of this behavior, there may be confusion. It would be nice if
- this script could detect the reuse of source files across multiple targets
- and turn the option off for the user, but no good solution could be found.
-
- CUDA_BUILD_CUBIN (Default OFF)
- -- Set to ON to enable and extra compilation pass with the -cubin option in
- Device mode. The output is parsed and register, shared memory usage is
- printed during build.
-
- CUDA_BUILD_EMULATION (Default OFF for device mode)
- -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files
- when CUDA_BUILD_EMULATION is TRUE.
-
- CUDA_LINK_LIBRARIES_KEYWORD (Default "")
- -- The <PRIVATE|PUBLIC|INTERFACE> keyword to use for internal
- target_link_libraries calls. The default is to use no keyword which
- uses the old "plain" form of target_link_libraries. Note that is matters
- because whatever is used inside the FindCUDA module must also be used
- outside - the two forms of target_link_libraries cannot be mixed.
-
- CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR)
- -- Set to the path you wish to have the generated files placed. If it is
- blank output files will be placed in CMAKE_CURRENT_BINARY_DIR.
- Intermediate files will always be placed in
- CMAKE_CURRENT_BINARY_DIR/CMakeFiles.
-
- CUDA_HOST_COMPILATION_CPP (Default ON)
- -- Set to OFF for C compilation of host code.
-
- CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER)
- -- Set the host compiler to be used by nvcc. Ignored if -ccbin or
- --compiler-bindir is already present in the CUDA_NVCC_FLAGS or
- CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets,
- the host compiler is constructed with one or more visual studio macros
- such as $(VCInstallDir), that expands out to the path when
- the command is run from within VS.
- If the CUDAHOSTCXX environment variable is set it will
- be used as the default.
+``cuda_add_executable()``, ``cuda_add_library()``, ``cuda_compile()``,
+``cuda_compile_ptx()``, ``cuda_compile_fatbin()``, ``cuda_compile_cubin()``
+or ``cuda_wrap_srcs()``:
+
+``CUDA_64_BIT_DEVICE_CODE`` (Default: host bit size)
+ Set to ``ON`` to compile for 64 bit device code, OFF for 32 bit device code.
+ Note that making this different from the host code when generating object
+ or C files from CUDA code just won't work, because size_t gets defined by
+ nvcc in the generated source. If you compile to PTX and then load the
+ file yourself, you can mix bit sizes between device and host.
+
+``CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE`` (Default: ``ON``)
+ Set to ``ON`` if you want the custom build rule to be attached to the source
+ file in Visual Studio. Turn OFF if you add the same cuda file to multiple
+ targets.
+
+ This allows the user to build the target from the CUDA file; however, bad
+ things can happen if the CUDA source file is added to multiple targets.
+ When performing parallel builds it is possible for the custom build
+ command to be run more than once and in parallel causing cryptic build
+ errors. VS runs the rules for every source file in the target, and a
+ source can have only one rule no matter how many projects it is added to.
+ When the rule is run from multiple targets race conditions can occur on
+ the generated file. Eventually everything will get built, but if the user
+ is unaware of this behavior, there may be confusion. It would be nice if
+ this script could detect the reuse of source files across multiple targets
+ and turn the option off for the user, but no good solution could be found.
+
+``CUDA_BUILD_CUBIN`` (Default: ``OFF``)
+ Set to ``ON`` to enable and extra compilation pass with the ``-cubin`` option in
+ Device mode. The output is parsed and register, shared memory usage is
+ printed during build.
+
+``CUDA_BUILD_EMULATION`` (Default: ``OFF`` for device mode)
+ Set to ``ON`` for Emulation mode. ``-D_DEVICEEMU`` is defined for CUDA C files
+ when ``CUDA_BUILD_EMULATION`` is ``TRUE``.
+
+``CUDA_LINK_LIBRARIES_KEYWORD`` (Default: ``""``)
+ .. versionadded:: 3.9
+
+ The ``<PRIVATE|PUBLIC|INTERFACE>`` keyword to use for internal
+ :command:`target_link_libraries` calls. The default is to use no keyword which
+ uses the old "plain" form of :command:`target_link_libraries`. Note that is matters
+ because whatever is used inside the ``FindCUDA`` module must also be used
+ outside - the two forms of :command:`target_link_libraries` cannot be mixed.
+
+``CUDA_GENERATED_OUTPUT_DIR`` (Default: :variable:`CMAKE_CURRENT_BINARY_DIR`)
+ Set to the path you wish to have the generated files placed. If it is
+ blank output files will be placed in :variable:`CMAKE_CURRENT_BINARY_DIR`.
+ Intermediate files will always be placed in
+ ``CMAKE_CURRENT_BINARY_DIR/CMakeFiles``.
+
+``CUDA_HOST_COMPILATION_CPP`` (Default: ``ON``)
+ Set to ``OFF`` for C compilation of host code.
+
+``CUDA_HOST_COMPILER`` (Default: ``CMAKE_C_COMPILER``)
+ Set the host compiler to be used by nvcc. Ignored if ``-ccbin`` or
+ ``--compiler-bindir`` is already present in the ``CUDA_NVCC_FLAGS`` or
+ ``CUDA_NVCC_FLAGS_<CONFIG>`` variables. For Visual Studio targets,
+ the host compiler is constructed with one or more visual studio macros
+ such as ``$(VCInstallDir)``, that expands out to the path when
+ the command is run from within VS.
+
+ .. versionadded:: 3.13
+ If the :envvar:`CUDAHOSTCXX` environment variable is set it will
+ be used as the default.
+
+``CUDA_NVCC_FLAGS``, ``CUDA_NVCC_FLAGS_<CONFIG>``
+ Additional NVCC command line arguments. NOTE: multiple arguments must be
+ semi-colon delimited (e.g. ``--compiler-options;-Wall``)
+
+ .. versionadded:: 3.6
+ Contents of these variables may use
+ :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+``CUDA_PROPAGATE_HOST_FLAGS`` (Default: ``ON``)
+ Set to ``ON`` to propagate :variable:`CMAKE_{C,CXX}_FLAGS <CMAKE_<LANG>_FLAGS>` and their configuration
+ dependent counterparts (e.g. ``CMAKE_C_FLAGS_DEBUG``) automatically to the
+ host compiler through nvcc's ``-Xcompiler`` flag. This helps make the
+ generated host code match the rest of the system better. Sometimes
+ certain flags give nvcc problems, and this will help you turn the flag
+ propagation off. This does not affect the flags supplied directly to nvcc
+ via ``CUDA_NVCC_FLAGS`` or through the ``OPTION`` flags specified through
+ ``cuda_add_library()``, ``cuda_add_executable()``, or ``cuda_wrap_srcs()``. Flags used for
+ shared library compilation are not affected by this flag.
- CUDA_NVCC_FLAGS
- CUDA_NVCC_FLAGS_<CONFIG>
- -- Additional NVCC command line arguments. NOTE: multiple arguments must be
- semi-colon delimited (e.g. --compiler-options;-Wall)
-
- CUDA_PROPAGATE_HOST_FLAGS (Default ON)
- -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration
- dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the
- host compiler through nvcc's -Xcompiler flag. This helps make the
- generated host code match the rest of the system better. Sometimes
- certain flags give nvcc problems, and this will help you turn the flag
- propagation off. This does not affect the flags supplied directly to nvcc
- via CUDA_NVCC_FLAGS or through the OPTION flags specified through
- CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS. Flags used for
- shared library compilation are not affected by this flag.
-
- CUDA_SEPARABLE_COMPILATION (Default OFF)
- -- If set this will enable separable compilation for all CUDA runtime object
- files. If used outside of CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY
- (e.g. calling CUDA_WRAP_SRCS directly),
- CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME and
- CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS should be called.
-
- CUDA_SOURCE_PROPERTY_FORMAT
- -- If this source file property is set, it can override the format specified
- to CUDA_WRAP_SRCS (OBJ, PTX, CUBIN, or FATBIN). If an input source file
- is not a .cu file, setting this file will cause it to be treated as a .cu
- file. See documentation for set_source_files_properties on how to set
- this property.
-
- CUDA_USE_STATIC_CUDA_RUNTIME (Default ON)
- -- When enabled the static version of the CUDA runtime library will be used
- in CUDA_LIBRARIES. If the version of CUDA configured doesn't support
- this option, then it will be silently disabled.
-
- CUDA_VERBOSE_BUILD (Default OFF)
- -- Set to ON to see all the commands used when building the CUDA file. When
- using a Makefile generator the value defaults to VERBOSE (run make
- VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will
- always print the output.
-
-The script creates the following macros (in alphabetical order)::
-
- CUDA_ADD_CUFFT_TO_TARGET( cuda_target )
- -- Adds the cufft library to the target (can be any target). Handles whether
- you are in emulation mode or not.
-
- CUDA_ADD_CUBLAS_TO_TARGET( cuda_target )
- -- Adds the cublas library to the target (can be any target). Handles
- whether you are in emulation mode or not.
-
- CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ...
- [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
- -- Creates an executable "cuda_target" which is made up of the files
- specified. All of the non CUDA C files are compiled using the standard
- build rules specified by CMAKE and the cuda files are compiled to object
- files using nvcc and the host compiler. In addition CUDA_INCLUDE_DIRS is
- added automatically to include_directories(). Some standard CMake target
- calls can be used on the target after calling this macro
- (e.g. set_target_properties and target_link_libraries), but setting
- properties that adjust compilation flags will not affect code compiled by
- nvcc. Such flags should be modified before calling CUDA_ADD_EXECUTABLE,
- CUDA_ADD_LIBRARY or CUDA_WRAP_SRCS.
-
- CUDA_ADD_LIBRARY( cuda_target file0 file1 ...
- [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
- -- Same as CUDA_ADD_EXECUTABLE except that a library is created.
-
- CUDA_BUILD_CLEAN_TARGET()
- -- Creates a convenience target that deletes all the dependency files
- generated. You should make clean after running this target to ensure the
- dependency files get regenerated.
-
- CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE]
- [OPTIONS ...] )
- -- Returns a list of generated files from the input source files to be used
- with ADD_LIBRARY or ADD_EXECUTABLE.
-
- CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] )
- -- Returns a list of PTX files generated from the input source files.
-
- CUDA_COMPILE_FATBIN( generated_files file0 file1 ... [OPTIONS ...] )
- -- Returns a list of FATBIN files generated from the input source files.
-
- CUDA_COMPILE_CUBIN( generated_files file0 file1 ... [OPTIONS ...] )
- -- Returns a list of CUBIN files generated from the input source files.
-
- CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME( output_file_var
- cuda_target
- object_files )
- -- Compute the name of the intermediate link file used for separable
- compilation. This file name is typically passed into
- CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS. output_file_var is produced
- based on cuda_target the list of objects files that need separable
- compilation as specified by object_files. If the object_files list is
- empty, then output_file_var will be empty. This function is called
- automatically for CUDA_ADD_LIBRARY and CUDA_ADD_EXECUTABLE. Note that
- this is a function and not a macro.
-
- CUDA_INCLUDE_DIRECTORIES( path0 path1 ... )
- -- Sets the directories that should be passed to nvcc
- (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu
- files.
-
-
- CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS( output_file_var cuda_target
- nvcc_flags object_files)
- -- Generates the link object required by separable compilation from the given
- object files. This is called automatically for CUDA_ADD_EXECUTABLE and
- CUDA_ADD_LIBRARY, but can be called manually when using CUDA_WRAP_SRCS
- directly. When called from CUDA_ADD_LIBRARY or CUDA_ADD_EXECUTABLE the
- nvcc_flags passed in are the same as the flags passed in via the OPTIONS
- argument. The only nvcc flag added automatically is the bitness flag as
- specified by CUDA_64_BIT_DEVICE_CODE. Note that this is a function
- instead of a macro.
-
- CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures])
- -- Selects GPU arch flags for nvcc based on target_CUDA_architectures
- target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...)
- - "Auto" detects local machine GPU compute arch at runtime.
- - "Common" and "All" cover common and entire subsets of architectures
- ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX
- NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal
- NUM: Any number. Only those pairs are currently accepted by NVCC though:
- 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2
- Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable}
- Additionally, sets ${out_variable}_readable to the resulting numeric list
- Example:
- CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
- LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
-
- More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA
- Note that this is a function instead of a macro.
-
- CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ...
- [STATIC | SHARED | MODULE] [OPTIONS ...] )
- -- This is where all the magic happens. CUDA_ADD_EXECUTABLE,
- CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this
- function under the hood.
-
- Given the list of files (file0 file1 ... fileN) this macro generates
- custom commands that generate either PTX or linkable objects (use "PTX" or
- "OBJ" for the format argument to switch). Files that don't end with .cu
- or have the HEADER_FILE_ONLY property are ignored.
-
- The arguments passed in after OPTIONS are extra command line options to
- give to nvcc. You can also specify per configuration options by
- specifying the name of the configuration followed by the options. General
- options must precede configuration specific options. Not all
- configurations need to be specified, only the ones provided will be used.
-
- OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag"
- DEBUG -g
- RELEASE --use_fast_math
- RELWITHDEBINFO --use_fast_math;-g
- MINSIZEREL --use_fast_math
-
- For certain configurations (namely VS generating object files with
- CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will
- be produced for the given cuda file. This is because when you add the
- cuda file to Visual Studio it knows that this file produces an object file
- and will link in the resulting object file automatically.
-
- This script will also generate a separate cmake script that is used at
- build time to invoke nvcc. This is for several reasons.
-
- 1. nvcc can return negative numbers as return values which confuses
- Visual Studio into thinking that the command succeeded. The script now
- checks the error codes and produces errors when there was a problem.
-
- 2. nvcc has been known to not delete incomplete results when it
- encounters problems. This confuses build systems into thinking the
- target was generated when in fact an unusable file exists. The script
- now deletes the output files if there was an error.
-
- 3. By putting all the options that affect the build into a file and then
- make the build rule dependent on the file, the output files will be
- regenerated when the options change.
-
- This script also looks at optional arguments STATIC, SHARED, or MODULE to
- determine when to target the object compilation for a shared library.
- BUILD_SHARED_LIBS is ignored in CUDA_WRAP_SRCS, but it is respected in
- CUDA_ADD_LIBRARY. On some systems special flags are added for building
- objects intended for shared libraries. A preprocessor macro,
- <target_name>_EXPORTS is defined when a shared library compilation is
- detected.
-
- Flags passed into add_definitions with -D or /D are passed along to nvcc.
-
-
-
-The script defines the following variables::
-
- CUDA_VERSION_MAJOR -- The major version of cuda as reported by nvcc.
- CUDA_VERSION_MINOR -- The minor version.
- CUDA_VERSION
- CUDA_VERSION_STRING -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR
- CUDA_HAS_FP16 -- Whether a short float (float16,fp16) is supported.
-
- CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set).
- CUDA_SDK_ROOT_DIR -- Path to the CUDA SDK. Use this to find files in the
- SDK. This script will not directly support finding
- specific libraries or headers, as that isn't
- supported by NVIDIA. If you want to change
- libraries when the path changes see the
- FindCUDA.cmake script for an example of how to clear
- these variables. There are also examples of how to
- use the CUDA_SDK_ROOT_DIR to locate headers or
- libraries, if you so choose (at your own risk).
- CUDA_INCLUDE_DIRS -- Include directory for cuda headers. Added automatically
- for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY.
- CUDA_LIBRARIES -- Cuda RT library.
- CUDA_CUFFT_LIBRARIES -- Device or emulation library for the Cuda FFT
- implementation (alternative to:
- CUDA_ADD_CUFFT_TO_TARGET macro)
- CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS
- implementation (alternative to:
- CUDA_ADD_CUBLAS_TO_TARGET macro).
- CUDA_cudart_static_LIBRARY -- Statically linkable cuda runtime library.
- Only available for CUDA version 5.5+
- CUDA_cudadevrt_LIBRARY -- Device runtime library.
- Required for separable compilation.
- CUDA_cupti_LIBRARY -- CUDA Profiling Tools Interface library.
- Only available for CUDA version 4.0+.
- CUDA_curand_LIBRARY -- CUDA Random Number Generation library.
- Only available for CUDA version 3.2+.
- CUDA_cusolver_LIBRARY -- CUDA Direct Solver library.
- Only available for CUDA version 7.0+.
- CUDA_cusparse_LIBRARY -- CUDA Sparse Matrix library.
- Only available for CUDA version 3.2+.
- CUDA_npp_LIBRARY -- NVIDIA Performance Primitives lib.
- Only available for CUDA version 4.0+.
- CUDA_nppc_LIBRARY -- NVIDIA Performance Primitives lib (core).
- Only available for CUDA version 5.5+.
- CUDA_nppi_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 5.5 - 8.0.
- CUDA_nppial_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppicc_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppicom_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0 - 10.2.
- Replaced by nvjpeg.
- CUDA_nppidei_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppif_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppig_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppim_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppist_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppisu_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_nppitc_LIBRARY -- NVIDIA Performance Primitives lib (image processing).
- Only available for CUDA version 9.0.
- CUDA_npps_LIBRARY -- NVIDIA Performance Primitives lib (signal processing).
- Only available for CUDA version 5.5+.
- CUDA_nvcuvenc_LIBRARY -- CUDA Video Encoder library.
- Only available for CUDA version 3.2+.
- Windows only.
- CUDA_nvcuvid_LIBRARY -- CUDA Video Decoder library.
- Only available for CUDA version 3.2+.
- Windows only.
- CUDA_nvToolsExt_LIBRARY
- -- NVIDA CUDA Tools Extension library.
- Available for CUDA version 5+.
- CUDA_OpenCL_LIBRARY -- NVIDA CUDA OpenCL library.
- Available for CUDA version 5+.
+``CUDA_SEPARABLE_COMPILATION`` (Default: ``OFF``)
+ If set this will enable separable compilation for all CUDA runtime object
+ files. If used outside of ``cuda_add_executable()`` and ``cuda_add_library()``
+ (e.g. calling ``cuda_wrap_srcs()`` directly),
+ ``cuda_compute_separable_compilation_object_file_name()`` and
+ ``cuda_link_separable_compilation_objects()`` should be called.
+
+``CUDA_SOURCE_PROPERTY_FORMAT``
+ .. versionadded:: 3.3
+
+ If this source file property is set, it can override the format specified
+ to ``cuda_wrap_srcs()`` (``OBJ``, ``PTX``, ``CUBIN``, or ``FATBIN``). If an input source file
+ is not a ``.cu`` file, setting this file will cause it to be treated as a ``.cu``
+ file. See documentation for set_source_files_properties on how to set
+ this property.
+
+``CUDA_USE_STATIC_CUDA_RUNTIME`` (Default: ``ON``)
+ .. versionadded:: 3.3
+
+ When enabled the static version of the CUDA runtime library will be used
+ in ``CUDA_LIBRARIES``. If the version of CUDA configured doesn't support
+ this option, then it will be silently disabled.
+
+``CUDA_VERBOSE_BUILD`` (Default: ``OFF``)
+ Set to ``ON`` to see all the commands used when building the CUDA file. When
+ using a Makefile generator the value defaults to ``VERBOSE`` (run
+ ``make VERBOSE=1`` to see output), although setting ``CUDA_VERBOSE_BUILD`` to ``ON`` will
+ always print the output.
+
+Commands
+""""""""
+
+The script creates the following functions and macros (in alphabetical order):
+
+.. code-block:: cmake
+
+ cuda_add_cufft_to_target(<cuda_target>)
+
+Adds the cufft library to the target (can be any target). Handles whether
+you are in emulation mode or not.
+
+.. code-block:: cmake
+
+ cuda_add_cublas_to_target(<cuda_target>)
+
+Adds the cublas library to the target (can be any target). Handles
+whether you are in emulation mode or not.
+
+.. code-block:: cmake
+
+ cuda_add_executable(<cuda_target> <file>...
+ [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...])
+
+Creates an executable ``<cuda_target>`` which is made up of the files
+specified. All of the non CUDA C files are compiled using the standard
+build rules specified by CMake and the CUDA files are compiled to object
+files using nvcc and the host compiler. In addition ``CUDA_INCLUDE_DIRS`` is
+added automatically to :command:`include_directories`. Some standard CMake target
+calls can be used on the target after calling this macro
+(e.g. :command:`set_target_properties` and :command:`target_link_libraries`), but setting
+properties that adjust compilation flags will not affect code compiled by
+nvcc. Such flags should be modified before calling ``cuda_add_executable()``,
+``cuda_add_library()`` or ``cuda_wrap_srcs()``.
+
+.. code-block:: cmake
+
+ cuda_add_library(<cuda_target> <file>...
+ [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...])
+
+Same as ``cuda_add_executable()`` except that a library is created.
+
+.. code-block:: cmake
+
+ cuda_build_clean_target()
+
+Creates a convenience target that deletes all the dependency files
+generated. You should make clean after running this target to ensure the
+dependency files get regenerated.
+
+.. code-block:: cmake
+
+ cuda_compile(<generated_files> <file>... [STATIC | SHARED | MODULE]
+ [OPTIONS ...])
+
+Returns a list of generated files from the input source files to be used
+with :command:`add_library` or :command:`add_executable`.
+
+.. code-block:: cmake
+
+ cuda_compile_ptx(<generated_files> <file>... [OPTIONS ...])
+
+Returns a list of ``PTX`` files generated from the input source files.
+
+.. code-block:: cmake
+
+ cuda_compile_fatbin(<generated_files> <file>... [OPTIONS ...])
+
+.. versionadded:: 3.1
+
+Returns a list of ``FATBIN`` files generated from the input source files.
+
+.. code-block:: cmake
+
+ cuda_compile_cubin(<generated_files> <file>... [OPTIONS ...])
+
+.. versionadded:: 3.1
+
+Returns a list of ``CUBIN`` files generated from the input source files.
+
+.. code-block:: cmake
+
+ cuda_compute_separable_compilation_object_file_name(<output_file_var>
+ <cuda_target>
+ <object_files>)
+
+Compute the name of the intermediate link file used for separable
+compilation. This file name is typically passed into
+``CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS``. output_file_var is produced
+based on cuda_target the list of objects files that need separable
+compilation as specified by ``<object_files>``. If the ``<object_files>`` list is
+empty, then ``<output_file_var>`` will be empty. This function is called
+automatically for ``cuda_add_library()`` and ``cuda_add_executable()``. Note that
+this is a function and not a macro.
+
+.. code-block:: cmake
+
+ cuda_include_directories(path0 path1 ...)
+
+Sets the directories that should be passed to nvcc
+(e.g. ``nvcc -Ipath0 -Ipath1 ...``). These paths usually contain other ``.cu``
+files.
+
+.. code-block:: cmake
+
+ cuda_link_separable_compilation_objects(<output_file_var> <cuda_target>
+ <nvcc_flags> <object_files>)
+
+Generates the link object required by separable compilation from the given
+object files. This is called automatically for ``cuda_add_executable()`` and
+``cuda_add_library()``, but can be called manually when using ``cuda_wrap_srcs()``
+directly. When called from ``cuda_add_library()`` or ``cuda_add_executable()`` the
+``<nvcc_flags>`` passed in are the same as the flags passed in via the ``OPTIONS``
+argument. The only nvcc flag added automatically is the bitness flag as
+specified by ``CUDA_64_BIT_DEVICE_CODE``. Note that this is a function
+instead of a macro.
+
+.. code-block:: cmake
+
+ cuda_select_nvcc_arch_flags(<out_variable> [<target_CUDA_architecture> ...])
+
+Selects GPU arch flags for nvcc based on ``target_CUDA_architecture``.
+
+Values for ``target_CUDA_architecture``:
+
+* ``Auto``: detects local machine GPU compute arch at runtime.
+* ``Common`` and ``All``: cover common and entire subsets of architectures.
+* ``<name>``: one of ``Fermi``, ``Kepler``, ``Maxwell``, ``Kepler+Tegra``, ``Kepler+Tesla``, ``Maxwell+Tegra``, ``Pascal``.
+* ``<ver>``, ``<ver>(<ver>)``, ``<ver>+PTX``, where ``<ver>`` is one of
+ ``2.0``, ``2.1``, ``3.0``, ``3.2``, ``3.5``, ``3.7``, ``5.0``, ``5.2``, ``5.3``, ``6.0``, ``6.2``.
+
+Returns list of flags to be added to ``CUDA_NVCC_FLAGS`` in ``<out_variable>``.
+Additionally, sets ``<out_variable>_readable`` to the resulting numeric list.
+
+Example::
+
+ cuda_select_nvcc_arch_flags(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
+ list(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
+
+More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA.
+Note that this is a function instead of a macro.
+
+.. code-block:: cmake
+
+ cuda_wrap_srcs(<cuda_target> <format> <generated_files> <file>...
+ [STATIC | SHARED | MODULE] [OPTIONS ...])
+
+This is where all the magic happens. ``cuda_add_executable()``,
+``cuda_add_library()``, ``cuda_compile()``, and ``cuda_compile_ptx()`` all call this
+function under the hood.
+
+Given the list of files ``<file>...`` this macro generates
+custom commands that generate either PTX or linkable objects (use ``PTX`` or
+``OBJ`` for the ``<format>`` argument to switch). Files that don't end with ``.cu``
+or have the ``HEADER_FILE_ONLY`` property are ignored.
+
+The arguments passed in after ``OPTIONS`` are extra command line options to
+give to nvcc. You can also specify per configuration options by
+specifying the name of the configuration followed by the options. General
+options must precede configuration specific options. Not all
+configurations need to be specified, only the ones provided will be used.
+For example:
+
+.. code-block:: cmake
+
+ cuda_add_executable(...
+ OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag"
+ DEBUG -g
+ RELEASE --use_fast_math
+ RELWITHDEBINFO --use_fast_math;-g
+ MINSIZEREL --use_fast_math)
+
+For certain configurations (namely VS generating object files with
+``CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE`` set to ``ON``), no generated file will
+be produced for the given cuda file. This is because when you add the
+cuda file to Visual Studio it knows that this file produces an object file
+and will link in the resulting object file automatically.
+
+This script will also generate a separate cmake script that is used at
+build time to invoke nvcc. This is for several reasons:
+
+* nvcc can return negative numbers as return values which confuses
+ Visual Studio into thinking that the command succeeded. The script now
+ checks the error codes and produces errors when there was a problem.
+
+* nvcc has been known to not delete incomplete results when it
+ encounters problems. This confuses build systems into thinking the
+ target was generated when in fact an unusable file exists. The script
+ now deletes the output files if there was an error.
+
+* By putting all the options that affect the build into a file and then
+ make the build rule dependent on the file, the output files will be
+ regenerated when the options change.
+
+This script also looks at optional arguments ``STATIC``, ``SHARED``, or ``MODULE`` to
+determine when to target the object compilation for a shared library.
+:variable:`BUILD_SHARED_LIBS` is ignored in ``cuda_wrap_srcs()``, but it is respected in
+``cuda_add_library()``. On some systems special flags are added for building
+objects intended for shared libraries. A preprocessor macro,
+``<target_name>_EXPORTS`` is defined when a shared library compilation is
+detected.
+
+Flags passed into add_definitions with ``-D`` or ``/D`` are passed along to nvcc.
+
+Result Variables
+""""""""""""""""
+
+The script defines the following variables:
+
+``CUDA_VERSION_MAJOR``
+ The major version of cuda as reported by nvcc.
+
+``CUDA_VERSION_MINOR``
+ The minor version.
+
+``CUDA_VERSION``, ``CUDA_VERSION_STRING``
+ Full version in the ``X.Y`` format.
+
+``CUDA_HAS_FP16``
+ .. versionadded:: 3.6
+ Whether a short float (``float16``, ``fp16``) is supported.
+
+``CUDA_TOOLKIT_ROOT_DIR``
+ Path to the CUDA Toolkit (defined if not set).
+
+``CUDA_SDK_ROOT_DIR``
+ Path to the CUDA SDK. Use this to find files in the SDK. This script will
+ not directly support finding specific libraries or headers, as that isn't
+ supported by NVIDIA. If you want to change libraries when the path changes
+ see the ``FindCUDA.cmake`` script for an example of how to clear these
+ variables. There are also examples of how to use the ``CUDA_SDK_ROOT_DIR``
+ to locate headers or libraries, if you so choose (at your own risk).
+
+``CUDA_INCLUDE_DIRS``
+ Include directory for cuda headers. Added automatically
+ for ``cuda_add_executable()`` and ``cuda_add_library()``.
+
+``CUDA_LIBRARIES``
+ Cuda RT library.
+
+``CUDA_CUFFT_LIBRARIES``
+ Device or emulation library for the Cuda FFT implementation (alternative to
+ ``cuda_add_cufft_to_target()`` macro)
+
+``CUDA_CUBLAS_LIBRARIES``
+ Device or emulation library for the Cuda BLAS implementation (alternative to
+ ``cuda_add_cublas_to_target()`` macro).
+
+``CUDA_cudart_static_LIBRARY``
+ Statically linkable cuda runtime library.
+ Only available for CUDA version 5.5+.
+
+``CUDA_cudadevrt_LIBRARY``
+ .. versionadded:: 3.7
+ Device runtime library. Required for separable compilation.
+
+``CUDA_cupti_LIBRARY``
+ CUDA Profiling Tools Interface library.
+ Only available for CUDA version 4.0+.
+
+``CUDA_curand_LIBRARY``
+ CUDA Random Number Generation library.
+ Only available for CUDA version 3.2+.
+
+``CUDA_cusolver_LIBRARY``
+ .. versionadded:: 3.2
+ CUDA Direct Solver library.
+ Only available for CUDA version 7.0+.
+
+``CUDA_cusparse_LIBRARY``
+ CUDA Sparse Matrix library.
+ Only available for CUDA version 3.2+.
+
+``CUDA_npp_LIBRARY``
+ NVIDIA Performance Primitives lib.
+ Only available for CUDA version 4.0+.
+
+``CUDA_nppc_LIBRARY``
+ NVIDIA Performance Primitives lib (core).
+ Only available for CUDA version 5.5+.
+
+``CUDA_nppi_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 5.5 - 8.0.
+
+``CUDA_nppial_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppicc_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppicom_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0 - 10.2.
+ Replaced by nvjpeg.
+
+``CUDA_nppidei_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppif_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppig_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppim_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppist_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppisu_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_nppitc_LIBRARY``
+ NVIDIA Performance Primitives lib (image processing).
+ Only available for CUDA version 9.0.
+
+``CUDA_npps_LIBRARY``
+ NVIDIA Performance Primitives lib (signal processing).
+ Only available for CUDA version 5.5+.
+
+``CUDA_nvcuvenc_LIBRARY``
+ CUDA Video Encoder library.
+ Only available for CUDA version 3.2+.
+ Windows only.
+
+``CUDA_nvcuvid_LIBRARY``
+ CUDA Video Decoder library.
+ Only available for CUDA version 3.2+.
+ Windows only.
+
+``CUDA_nvToolsExt_LIBRARY``
+ .. versionadded:: 3.16
+ NVIDA CUDA Tools Extension library.
+ Available for CUDA version 5+.
+
+``CUDA_OpenCL_LIBRARY``
+ .. versionadded:: 3.16
+ NVIDA CUDA OpenCL library.
+ Available for CUDA version 5+.
#]=======================================================================]
diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake
index b3c8569bfa..61e264b61c 100644
--- a/Modules/FindCUDAToolkit.cmake
+++ b/Modules/FindCUDAToolkit.cmake
@@ -11,6 +11,9 @@ This script locates the NVIDIA CUDA toolkit and the associated libraries, but
does not require the ``CUDA`` language be enabled for a given project. This
module does not search for the NVIDIA CUDA Samples.
+.. versionadded:: 3.19
+ QNX support.
+
Search Behavior
^^^^^^^^^^^^^^^
@@ -426,6 +429,8 @@ Result variables
Runtime library ``cudart``.
``CUDAToolkit_LIBRARY_ROOT``
+ .. versionadded:: 3.18
+
The path to the CUDA Toolkit directory containing the nvvm directory and
version.txt.
diff --git a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake
index 74b36c6f7c..e37d22591c 100644
--- a/Modules/FindCURL.cmake
+++ b/Modules/FindCURL.cmake
@@ -7,8 +7,11 @@ FindCURL
Find the native CURL headers and libraries.
-This module accept optional COMPONENTS to check supported features and
-protocols::
+.. versionadded:: 3.14
+ This module accept optional COMPONENTS to check supported features and
+ protocols:
+
+::
PROTOCOLS: ICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3
POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP
@@ -18,6 +21,8 @@ protocols::
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if
curl has been found.
@@ -38,9 +43,14 @@ This module defines the following variables:
``CURL_VERSION_STRING``
The version of ``curl`` found.
+.. versionadded:: 3.13
+ Debug and Release variants are found separately.
+
CURL CMake
^^^^^^^^^^
+.. versionadded:: 3.17
+
If CURL was built using the CMake buildsystem then it provides its own
``CURLConfig.cmake`` file for use with the :command:`find_package` command's
config mode. This module looks for this file and, if found,
diff --git a/Modules/FindCups.cmake b/Modules/FindCups.cmake
index 4e8232d072..cf0d3416a7 100644
--- a/Modules/FindCups.cmake
+++ b/Modules/FindCups.cmake
@@ -13,6 +13,8 @@ features this function (i.e. at least ``1.1.19``)
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.15
+
This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
been found.
diff --git a/Modules/FindCurses.cmake b/Modules/FindCurses.cmake
index cde3a4d2d7..5e25deb68e 100644
--- a/Modules/FindCurses.cmake
+++ b/Modules/FindCurses.cmake
@@ -19,6 +19,8 @@ This module defines the following variables:
``CURSES_LIBRARIES``
The libraries needed to use Curses.
``CURSES_CFLAGS``
+ .. versionadded:: 3.16
+
Parameters which ought be given to C/C++ compilers when using Curses.
``CURSES_HAVE_CURSES_H``
True if curses.h is available.
@@ -31,8 +33,10 @@ This module defines the following variables:
Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
``find_package(Curses)`` call if NCurses functionality is required.
-Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
-``find_package(Curses)`` call if unicode functionality is required.
+
+.. versionadded:: 3.10
+ Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
+ ``find_package(Curses)`` call if unicode functionality is required.
Backward Compatibility
^^^^^^^^^^^^^^^^^^^^^^
diff --git a/Modules/FindDoxygen.cmake b/Modules/FindDoxygen.cmake
index 81fbbb7585..bbf941efb1 100644
--- a/Modules/FindDoxygen.cmake
+++ b/Modules/FindDoxygen.cmake
@@ -6,8 +6,7 @@ FindDoxygen
-----------
Doxygen is a documentation generation tool (see http://www.doxygen.org).
-This module looks for Doxygen and some optional tools it supports. These
-tools are enabled as components in the :command:`find_package` command:
+This module looks for Doxygen and some optional tools it supports:
``dot``
`Graphviz <http://graphviz.org>`_ ``dot`` utility used to render various
@@ -19,7 +18,9 @@ tools are enabled as components in the :command:`find_package` command:
`Dia <https://wiki.gnome.org/Apps/Dia>`_ the diagram editor used by Doxygen's
``\diafile`` command.
-Examples:
+.. versionadded:: 3.9
+ These tools are available as components in the :command:`find_package` command.
+ For example:
.. code-block:: cmake
@@ -38,12 +39,13 @@ The following variables are defined by this module:
The version reported by ``doxygen --version``.
-The module defines ``IMPORTED`` targets for Doxygen and each component found.
-These can be used as part of custom commands, etc. and should be preferred over
-old-style (and now deprecated) variables like ``DOXYGEN_EXECUTABLE``. The
-following import targets are defined if their corresponding executable could be
-found (the component import targets will only be defined if that component was
-requested):
+.. versionadded:: 3.9
+ The module defines ``IMPORTED`` targets for Doxygen and each component found.
+ These can be used as part of custom commands, etc. and should be preferred over
+ old-style (and now deprecated) variables like ``DOXYGEN_EXECUTABLE``. The
+ following import targets are defined if their corresponding executable could be
+ found (the component import targets will only be defined if that component was
+ requested):
::
@@ -58,6 +60,8 @@ Functions
.. command:: doxygen_add_docs
+ .. versionadded:: 3.9
+
This function is intended as a convenience for adding a target for generating
documentation with Doxygen. It aims to provide sensible defaults so that
projects can generally just provide the input files and directories and that
@@ -93,19 +97,21 @@ Functions
the :command:`add_custom_target` command used to create the custom target
internally.
- If ``ALL`` is set, the target will be added to the default build target.
-
- If ``USE_STAMP_FILE`` is set, the custom command defined by this function will
- create a stamp file with the name ``<targetName>.stamp`` in the current
- binary directory whenever doxygen is re-run. With this option present, all
- items in ``<filesOrDirs>`` must be files (i.e. no directories, symlinks or
- wildcards) and each of the files must exist at the time
- ``doxygen_add_docs()`` is called. An error will be raised if any of the
- items listed is missing or is not a file when ``USE_STAMP_FILE`` is given.
- A dependency will be created on each of the files so that doxygen will only
- be re-run if one of the files is updated. Without the ``USE_STAMP_FILE``
- option, doxygen will always be re-run if the ``<targetName>`` target is built
- regardless of whether anything listed in ``<filesOrDirs>`` has changed.
+ .. versionadded:: 3.12
+ If ``ALL`` is set, the target will be added to the default build target.
+
+ .. versionadded:: 3.16
+ If ``USE_STAMP_FILE`` is set, the custom command defined by this function will
+ create a stamp file with the name ``<targetName>.stamp`` in the current
+ binary directory whenever doxygen is re-run. With this option present, all
+ items in ``<filesOrDirs>`` must be files (i.e. no directories, symlinks or
+ wildcards) and each of the files must exist at the time
+ ``doxygen_add_docs()`` is called. An error will be raised if any of the
+ items listed is missing or is not a file when ``USE_STAMP_FILE`` is given.
+ A dependency will be created on each of the files so that doxygen will only
+ be re-run if one of the files is updated. Without the ``USE_STAMP_FILE``
+ option, doxygen will always be re-run if the ``<targetName>`` target is built
+ regardless of whether anything listed in ``<filesOrDirs>`` has changed.
The contents of the generated ``Doxyfile`` can be customized by setting CMake
variables before calling ``doxygen_add_docs()``. Any variable with a name of
@@ -308,18 +314,19 @@ if they contain at least one space:
WARN_LOGFILE
XML_OUTPUT
-There are situations where it may be undesirable for a particular config option
-to be automatically quoted by ``doxygen_add_docs()``, such as ``ALIASES`` which
-may need to include its own embedded quoting. The ``DOXYGEN_VERBATIM_VARS``
-variable can be used to specify a list of Doxygen variables (including the
-leading ``DOXYGEN_`` prefix) which should not be quoted. The project is then
-responsible for ensuring that those variables' values make sense when placed
-directly in the Doxygen input file. In the case of list variables, list items
-are still separated by spaces, it is only the automatic quoting that is
-skipped. For example, the following allows ``doxygen_add_docs()`` to apply
-quoting to ``DOXYGEN_PROJECT_BRIEF``, but not each item in the
-``DOXYGEN_ALIASES`` list (:ref:`bracket syntax <Bracket Argument>` can also
-be used to make working with embedded quotes easier):
+.. versionadded:: 3.11
+ There are situations where it may be undesirable for a particular config option
+ to be automatically quoted by ``doxygen_add_docs()``, such as ``ALIASES`` which
+ may need to include its own embedded quoting. The ``DOXYGEN_VERBATIM_VARS``
+ variable can be used to specify a list of Doxygen variables (including the
+ leading ``DOXYGEN_`` prefix) which should not be quoted. The project is then
+ responsible for ensuring that those variables' values make sense when placed
+ directly in the Doxygen input file. In the case of list variables, list items
+ are still separated by spaces, it is only the automatic quoting that is
+ skipped. For example, the following allows ``doxygen_add_docs()`` to apply
+ quoting to ``DOXYGEN_PROJECT_BRIEF``, but not each item in the
+ ``DOXYGEN_ALIASES`` list (:ref:`bracket syntax <Bracket Argument>` can also
+ be used to make working with embedded quotes easier):
.. code-block:: cmake
@@ -341,6 +348,8 @@ The resultant ``Doxyfile`` will contain the following lines:
Deprecated Result Variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. deprecated:: 3.9
+
For compatibility with previous versions of CMake, the following variables
are also defined but they are deprecated and should no longer be used:
@@ -375,6 +384,8 @@ are also defined but they are deprecated and should no longer be used:
Deprecated Hint Variables
^^^^^^^^^^^^^^^^^^^^^^^^^
+.. deprecated:: 3.9
+
.. variable:: DOXYGEN_SKIP_DOT
This variable has no effect for the component form of ``find_package``.
diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake
index b0bb02a566..f9cb432078 100644
--- a/Modules/FindEXPAT.cmake
+++ b/Modules/FindEXPAT.cmake
@@ -11,6 +11,8 @@ Expat is a stream-oriented XML parser library written in C.
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.10
+
This module defines the following :prop_tgt:`IMPORTED` targets:
``EXPAT::EXPAT``
diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake
index 13847367d0..e67e931125 100644
--- a/Modules/FindFLEX.cmake
+++ b/Modules/FindFLEX.cmake
@@ -37,11 +37,20 @@ If flex is found on the system, the module provides the macro:
)
which creates a custom command to generate the ``FlexOutput`` file from
-the ``FlexInput`` file. If ``COMPILE_FLAGS`` option is specified, the next
-parameter is added to the flex command line. If flex is configured to
-output a header file, the ``DEFINES_FILE`` option may be used to specify its
-name. Name is an alias used to get details of this custom command.
-Indeed the macro defines the following variables:
+the ``FlexInput`` file. Name is an alias used to get details of this custom
+command. If ``COMPILE_FLAGS`` option is specified, the next
+parameter is added to the flex command line.
+
+.. versionadded:: 3.5
+ If flex is configured to
+ output a header file, the ``DEFINES_FILE`` option may be used to specify its
+ name.
+
+.. versionchanged:: 3.17
+ When :policy:`CMP0098` is set to ``NEW``, ``flex`` runs in the
+ :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
+
+The macro defines the following variables:
::
diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake
index e273642b5f..e1e239a662 100644
--- a/Modules/FindFLTK.cmake
+++ b/Modules/FindFLTK.cmake
@@ -77,6 +77,10 @@ The following cache variables are also available to set or use:
``FLTK_IMAGES_LIBRARY_DEBUG``
The FLTK Images library (debug)
+
+.. versionadded:: 3.11
+ Debug and Release variants are found separately and use per-configuration
+ variables.
#]=======================================================================]
if(NOT FLTK_SKIP_OPENGL)
diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake
index 3e6a177dcc..82885cb2f1 100644
--- a/Modules/FindFreetype.cmake
+++ b/Modules/FindFreetype.cmake
@@ -10,6 +10,8 @@ Find the FreeType font renderer includes and library.
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.10
+
This module defines the following :prop_tgt:`IMPORTED` target:
``Freetype::Freetype``
@@ -33,7 +35,10 @@ This module will set the following variables in your project:
``FREETYPE_LIBRARIES``
the library to link against
``FREETYPE_VERSION_STRING``
- the version of freetype found (since CMake 2.8.8)
+ the version of freetype found
+
+.. versionadded:: 3.7
+ Debug and Release variants are found separately.
Hints
^^^^^
diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake
index fde84d4889..406a7387f9 100644
--- a/Modules/FindGDAL.cmake
+++ b/Modules/FindGDAL.cmake
@@ -10,6 +10,8 @@ Find Geospatial Data Abstraction Library (GDAL).
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.14
+
This module defines :prop_tgt:`IMPORTED` target ``GDAL::GDAL``
if GDAL has been found.
@@ -25,7 +27,8 @@ This module will set the following variables in your project:
``GDAL_LIBRARIES``
Libraries to link to GDAL.
``GDAL_VERSION``
- The version of GDAL found.
+ .. versionadded:: 3.14
+ The version of GDAL found.
Cache variables
^^^^^^^^^^^^^^^
diff --git a/Modules/FindGLEW.cmake b/Modules/FindGLEW.cmake
index 187b6a8d2f..b9ebe08bd6 100644
--- a/Modules/FindGLEW.cmake
+++ b/Modules/FindGLEW.cmake
@@ -21,6 +21,8 @@ The following variables may be set to influence this module's behavior:
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.1
+
This module defines the following :ref:`Imported Targets <Imported Targets>`:
@@ -55,6 +57,9 @@ This module defines the following variables:
``GLEW_VERSION_MICRO``
GLEW micro version
+.. versionadded:: 3.7
+ Debug and Release variants are found separately.
+
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
diff --git a/Modules/FindGLUT.cmake b/Modules/FindGLUT.cmake
index a22bf5bca8..c81d97101e 100644
--- a/Modules/FindGLUT.cmake
+++ b/Modules/FindGLUT.cmake
@@ -10,6 +10,8 @@ Find OpenGL Utility Toolkit (GLUT) library and include files.
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.1
+
This module defines the :prop_tgt:`IMPORTED` targets:
``GLUT::GLUT``
@@ -33,6 +35,9 @@ Also defined, but not for general use are:
GLUT_glut_LIBRARY = the full path to the glut library.
GLUT_Xmu_LIBRARY = the full path to the Xmu library.
GLUT_Xi_LIBRARY = the full path to the Xi Library.
+
+.. versionadded:: 3.13
+ Debug and Release variants are found separately.
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
diff --git a/Modules/FindGTK2.cmake b/Modules/FindGTK2.cmake
index 62f1614f8c..7036b66d48 100644
--- a/Modules/FindGTK2.cmake
+++ b/Modules/FindGTK2.cmake
@@ -16,6 +16,23 @@ module. See example below.
* ``glade``
* ``glademm``
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets (subject to
+component selection):
+
+``GTK2::atk``, ``GTK2::atkmm``, ``GTK2::cairo``, ``GTK2::cairomm``,
+``GTK2::gdk_pixbuf``, ``GTK2::gdk``, ``GTK2::gdkmm``, ``GTK2::gio``,
+``GTK2::giomm``, ``GTK2::glade``, ``GTK2::glademm``, ``GTK2::glib``,
+``GTK2::glibmm``, ``GTK2::gmodule``, ``GTK2::gobject``, ``GTK2::gthread``,
+``GTK2::gtk``, ``GTK2::gtkmm``, ``GTK2::harfbuzz``, ``GTK2::pango``,
+``GTK2::pangocairo``, ``GTK2::pangoft2``, ``GTK2::pangomm``,
+``GTK2::pangoxft``, ``GTK2::sigc``.
+
+.. versionadded:: 3.16.7
+ Added the ``GTK2::harfbuzz`` target.
+
Result Variables
^^^^^^^^^^^^^^^^
@@ -28,7 +45,8 @@ The following variables will be defined for your use
``GTK2_LIBRARIES``
All libraries
``GTK2_TARGETS``
- All imported targets
+ .. versionadded:: 3.5
+ All imported targets
``GTK2_DEFINITIONS``
Additional compiler flags
``GTK2_VERSION``
@@ -40,6 +58,10 @@ The following variables will be defined for your use
``GTK2_PATCH_VERSION``
The patch version of GTK2
+.. versionadded:: 3.5
+ When ``GTK2_USE_IMPORTED_TARGETS`` is set to ``TRUE``, ``GTK2_LIBRARIES``
+ will list imported targets instead of library paths.
+
Input Variables
^^^^^^^^^^^^^^^
diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake
index 43808646c0..8e22f79198 100644
--- a/Modules/FindGTest.cmake
+++ b/Modules/FindGTest.cmake
@@ -7,10 +7,14 @@ FindGTest
Locate the Google C++ Testing Framework.
+.. versionadded:: 3.20
+ Upstream ``GTestConfig.cmake`` is used if possible.
+
Imported targets
^^^^^^^^^^^^^^^^
-This module defines the following :prop_tgt:`IMPORTED` targets:
+.. versionadded:: 3.20
+ This module defines the following :prop_tgt:`IMPORTED` targets:
``GTest::gtest``
The Google Test ``gtest`` library, if found; adds Thread::Thread
@@ -18,8 +22,9 @@ This module defines the following :prop_tgt:`IMPORTED` targets:
``GTest::gtest_main``
The Google Test ``gtest_main`` library, if found
-For backwards compatibility, this module defines additionally the
-following deprecated :prop_tgt:`IMPORTED` targets:
+.. deprecated:: 3.20
+ For backwards compatibility, this module defines additionally the
+ following deprecated :prop_tgt:`IMPORTED` targets (available since 3.5):
``GTest::GTest``
The Google Test ``gtest`` library, if found; adds Thread::Thread
@@ -81,6 +86,10 @@ Deeper integration with CTest
See :module:`GoogleTest` for information on the :command:`gtest_add_tests`
and :command:`gtest_discover_tests` commands.
+
+.. versionchanged:: 3.9
+ Previous CMake versions defined :command:`gtest_add_tests` macro in this
+ module.
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/GoogleTest.cmake)
diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake
index 213ad13de0..252f2aea27 100644
--- a/Modules/FindGettext.cmake
+++ b/Modules/FindGettext.cmake
@@ -54,7 +54,7 @@ PO_FILES <po1> <po2> ... )
If ALL is specified, the po files are processed when building the all traget.
It creates a custom target "pofiles".
-.. note::
+.. versionadded:: 3.2
If you wish to use the Gettext library (libintl), use :module:`FindIntl`.
#]=======================================================================]
diff --git a/Modules/FindGit.cmake b/Modules/FindGit.cmake
index 3491cdcc2f..f8346b61d0 100644
--- a/Modules/FindGit.cmake
+++ b/Modules/FindGit.cmake
@@ -5,12 +5,6 @@
FindGit
-------
-The module defines the following ``IMPORTED`` targets (when
-:prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
-
-``Git::Git``
- Executable of the Git command-line client.
-
The module defines the following variables:
``GIT_EXECUTABLE``
@@ -20,6 +14,13 @@ The module defines the following variables:
``GIT_VERSION_STRING``
The version of Git found.
+.. versionadded:: 3.14
+ The module defines the following ``IMPORTED`` targets (when
+ :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
+
+``Git::Git``
+ Executable of the Git command-line client.
+
Example usage:
.. code-block:: cmake
diff --git a/Modules/FindGnuTLS.cmake b/Modules/FindGnuTLS.cmake
index 819f000121..782a72b2fe 100644
--- a/Modules/FindGnuTLS.cmake
+++ b/Modules/FindGnuTLS.cmake
@@ -10,6 +10,8 @@ Find the GNU Transport Layer Security library (gnutls)
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.16
+
This module defines :prop_tgt:`IMPORTED` target ``GnuTLS::GnuTLS``, if
gnutls has been found.
diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake
index 0c1e93b09b..12f4c178dd 100644
--- a/Modules/FindHDF5.cmake
+++ b/Modules/FindHDF5.cmake
@@ -32,6 +32,9 @@ static link to a dynamic link for ``HDF5`` and all of it's dependencies.
To use this feature, make sure that the ``HDF5_USE_STATIC_LIBRARIES``
variable is set before the call to find_package.
+.. versionadded:: 3.10
+ Support for ``HDF5_USE_STATIC_LIBRARIES`` on Windows.
+
Both the serial and parallel ``HDF5`` wrappers are considered and the first
directory to contain either one will be used. In the event that both appear
in the same directory the serial version is preferentially selected. This
@@ -51,7 +54,8 @@ This module will set the following variables in your project:
``HDF5_FOUND``
HDF5 was found on the system
``HDF5_VERSION``
- HDF5 library version
+ .. versionadded:: 3.3
+ HDF5 library version
``HDF5_INCLUDE_DIRS``
Location of the HDF5 header files
``HDF5_DEFINITIONS``
@@ -128,12 +132,18 @@ Hints
The following variables can be set to guide the search for HDF5 libraries and includes:
``HDF5_PREFER_PARALLEL``
+ .. versionadded:: 3.4
+
set ``true`` to prefer parallel HDF5 (by default, serial is preferred)
``HDF5_FIND_DEBUG``
+ .. versionadded:: 3.9
+
Set ``true`` to get extra debugging output.
``HDF5_NO_FIND_PACKAGE_CONFIG_FILE``
+ .. versionadded:: 3.8
+
Set ``true`` to skip trying to find ``hdf5-config.cmake``.
#]=======================================================================]
diff --git a/Modules/FindHg.cmake b/Modules/FindHg.cmake
index 1358363d2a..e9f2c8277c 100644
--- a/Modules/FindHg.cmake
+++ b/Modules/FindHg.cmake
@@ -15,7 +15,8 @@ The module defines the following variables:
HG_FOUND - true if the command line client was found
HG_VERSION_STRING - the version of mercurial found
-If the command line client executable is found the following macro is defined:
+.. versionadded:: 3.1
+ If the command line client executable is found the following macro is defined:
::
diff --git a/Modules/FindICU.cmake b/Modules/FindICU.cmake
index fa0cba393b..2bb49adec1 100644
--- a/Modules/FindICU.cmake
+++ b/Modules/FindICU.cmake
@@ -18,6 +18,9 @@ Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named
``in``; any of the names may be used, and the appropriate
platform-specific library name will be automatically selected.
+.. versionadded:: 3.11
+ Added support for static libraries on Windows.
+
This module reports information about the ICU installation in
several variables. General variables::
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
index 0f821e886f..543e10c38f 100644
--- a/Modules/FindIce.cmake
+++ b/Modules/FindIce.cmake
@@ -23,6 +23,15 @@ Ice 3.7 and later also include C++11-specific components:
Note that the set of supported components is Ice version-specific.
+.. versionadded:: 3.4
+ Imported targets for components and most ``EXECUTABLE`` variables.
+
+.. versionadded:: 3.7
+ Debug and Release variants are found separately.
+
+.. versionadded:: 3.10
+ Ice 3.7 support, including new components, programs and the Nuget package.
+
This module reports information about the Ice installation in
several variables. General variables::
@@ -56,6 +65,9 @@ Ice slice programs are reported in::
Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
+.. versionadded:: 3.14
+ Variables for ``slice2confluence`` and ``slice2matlab``.
+
Ice programs are reported in::
Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable
diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake
index 8bf5123b76..d7de0ddccf 100644
--- a/Modules/FindImageMagick.cmake
+++ b/Modules/FindImageMagick.cmake
@@ -7,6 +7,9 @@ FindImageMagick
Find ImageMagick binary suite.
+.. versionadded:: 3.9
+ Added support for ImageMagick 7.
+
This module will search for a set of ImageMagick tools specified as
components in the :command:`find_package` call. Typical components include,
but are not limited to (future versions of ImageMagick might have
diff --git a/Modules/FindIntl.cmake b/Modules/FindIntl.cmake
index d29f554eae..686c818010 100644
--- a/Modules/FindIntl.cmake
+++ b/Modules/FindIntl.cmake
@@ -15,7 +15,9 @@ installation in several variables. General variables::
Intl_FOUND - true if the libintl headers and libraries were found
Intl_INCLUDE_DIRS - the directory containing the libintl headers
Intl_LIBRARIES - libintl libraries to be linked
- Intl::Intl - imported target for Intl
+
+.. versionadded:: 3.20
+ This module defines :prop_tgt:`IMPORTED` target ``Intl::Intl``.
The following cache variables may also be set::
@@ -26,6 +28,10 @@ The following cache variables may also be set::
Intl_IS_BUILTIN - whether intl is a part of the C library determined
from the result of Intl_HAVE_GETTEXT_BUILTIN and Intl_HAVE_DCGETTEXT_BUILTIN
+.. versionadded:: 3.20
+ Added the ``Intl_HAVE_GETTEXT_BUILTIN``, ``Intl_HAVE_DCGETTEXT_BUILTIN`` and
+ ``Intl_IS_BUILTIN`` variables.
+
.. note::
On some platforms, such as Linux with GNU libc, the gettext
functions are present in the C standard library and libintl
diff --git a/Modules/FindJPEG.cmake b/Modules/FindJPEG.cmake
index 632fc9aa0f..3f243ded57 100644
--- a/Modules/FindJPEG.cmake
+++ b/Modules/FindJPEG.cmake
@@ -10,6 +10,8 @@ Find the Joint Photographic Experts Group (JPEG) library (``libjpeg``)
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
This module defines the following :prop_tgt:`IMPORTED` targets:
``JPEG::JPEG``
@@ -27,7 +29,8 @@ This module will set the following variables in your project:
``JPEG_LIBRARIES``
the libraries needed to use JPEG.
``JPEG_VERSION``
- the version of the JPEG library found
+ .. versionadded:: 3.12
+ the version of the JPEG library found
Cache variables
^^^^^^^^^^^^^^^
@@ -41,6 +44,9 @@ The following cache variables may also be set:
``JPEG_LIBRARY_DEBUG``
where to find the JPEG library (debug).
+.. versionadded:: 3.12
+ Debug and Release variand are found separately.
+
Obsolete variables
^^^^^^^^^^^^^^^^^^
diff --git a/Modules/FindJava.cmake b/Modules/FindJava.cmake
index 9db740b4f8..4f0e0feafe 100644
--- a/Modules/FindJava.cmake
+++ b/Modules/FindJava.cmake
@@ -13,6 +13,9 @@ to specify a Java installation prefix explicitly.
See also the :module:`FindJNI` module to find Java Native Interface (JNI).
+.. versionadded:: 3.10
+ Added support for Java 9+ version parsing.
+
Specify one or more of the following components as you call this find module. See example below.
::
@@ -41,7 +44,9 @@ This module sets the following result variables:
Java_VERSION_TWEAK = The tweak version of the package found (after '_')
Java_VERSION = This is set to: $major[.$minor[.$patch[.$tweak]]]
-
+.. versionadded:: 3.4
+ Added the ``Java_IDLJ_EXECUTABLE`` and ``Java_JARSIGNER_EXECUTABLE``
+ variables.
The minimum required version of Java can be specified using the
:command:`find_package` syntax, e.g.
diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake
index 4b71cee595..4f769ba819 100644
--- a/Modules/FindLAPACK.cmake
+++ b/Modules/FindLAPACK.cmake
@@ -45,12 +45,33 @@ The following variables may be set to influence this module's behavior:
* ``Arm_ilp64_mp``
* ``Generic``
+ .. versionadded:: 3.6
+ ``OpenBLAS`` support.
+
+ .. versionadded:: 3.11
+ ``FLAME`` support.
+
+ .. versionadded:: 3.13
+ Added ILP64 MKL variants (``Intel10_64ilp``, ``Intel10_64ilp_seq``).
+
+ .. versionadded:: 3.17
+ Added single dynamic library MKL variant (``Intel10_64_dyn``).
+
+ .. versionadded:: 3.18
+ Arm Performance Libraries support (``Arm``, ``Arm_mp``, ``Arm_ilp64``,
+ ``Arm_ilp64_mp``).
+
+ .. versionadded:: 3.19
+ ``FlexiBLAS`` support.
+
``BLA_F95``
if ``ON`` tries to find the BLAS95/LAPACK95 interfaces
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.18
+
This module defines the following :prop_tgt:`IMPORTED` target:
``LAPACK::LAPACK``
diff --git a/Modules/FindLATEX.cmake b/Modules/FindLATEX.cmake
index b0dad7da3a..1e82651fe1 100644
--- a/Modules/FindLATEX.cmake
+++ b/Modules/FindLATEX.cmake
@@ -11,6 +11,10 @@ This module finds an installed LaTeX and determines the location
of the compiler. Additionally the module looks for Latex-related
software like BibTeX.
+.. versionadded:: 3.2
+ Component processing; support for htlatex, pdftops, Biber, xindy, XeLaTeX,
+ LuaLaTeX.
+
This module sets the following result variables::
LATEX_FOUND: whether found Latex and requested components
diff --git a/Modules/FindLibArchive.cmake b/Modules/FindLibArchive.cmake
index ce3c8b8e8c..08078a295f 100644
--- a/Modules/FindLibArchive.cmake
+++ b/Modules/FindLibArchive.cmake
@@ -22,6 +22,10 @@ The module defines the following ``IMPORTED`` targets:
::
LibArchive::LibArchive - target for linking against libarchive
+
+.. versionadded:: 3.6
+ Support for new libarchive 3.2 version string format.
+
#]=======================================================================]
find_path(LibArchive_INCLUDE_DIR
diff --git a/Modules/FindLibLZMA.cmake b/Modules/FindLibLZMA.cmake
index 4a79a1028b..9ec8f075df 100644
--- a/Modules/FindLibLZMA.cmake
+++ b/Modules/FindLibLZMA.cmake
@@ -11,6 +11,8 @@ Find LZMA compression algorithm headers and library.
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.14
+
This module defines :prop_tgt:`IMPORTED` target ``LibLZMA::LibLZMA``, if
liblzma has been found.
diff --git a/Modules/FindLibXml2.cmake b/Modules/FindLibXml2.cmake
index 0631607129..ce28d03026 100644
--- a/Modules/FindLibXml2.cmake
+++ b/Modules/FindLibXml2.cmake
@@ -10,12 +10,16 @@ Find the XML processing library (libxml2).
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
The following :prop_tgt:`IMPORTED` targets may be defined:
``LibXml2::LibXml2``
- If the libxml2 library has been found
+ libxml2 library.
``LibXml2::xmllint``
- If the xmllint command-line executable has been found
+ .. versionadded:: 3.17
+
+ xmllint command-line executable.
Result variables
^^^^^^^^^^^^^^^^
diff --git a/Modules/FindLibXslt.cmake b/Modules/FindLibXslt.cmake
index fc7adeb0f7..97943d6d1d 100644
--- a/Modules/FindLibXslt.cmake
+++ b/Modules/FindLibXslt.cmake
@@ -11,6 +11,8 @@ Transformations (XSLT) library (LibXslt)
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.18
+
The following :prop_tgt:`IMPORTED` targets may be defined:
``LibXslt::LibXslt``
@@ -35,7 +37,8 @@ Additionally, the following two variables are set (but not required
for using xslt):
``LIBXSLT_EXSLT_INCLUDE_DIR``
- The include directory for exslt.
+ .. versionadded:: 3.18
+ The include directory for exslt.
``LIBXSLT_EXSLT_LIBRARIES``
Link to these if you need to link against the exslt library.
``LIBXSLT_XSLTPROC_EXECUTABLE``
diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake
index c4361b74b1..32642fe239 100644
--- a/Modules/FindLua.cmake
+++ b/Modules/FindLua.cmake
@@ -5,10 +5,11 @@
FindLua
-------
-
-
Locate Lua library.
+.. versionadded:: 3.18
+ Support for Lua 5.4.
+
This module defines::
::
diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake
index b531e4740b..19e6e57846 100644
--- a/Modules/FindMPI.cmake
+++ b/Modules/FindMPI.cmake
@@ -12,6 +12,10 @@ high-performance distributed-memory parallel applications, and is
typically deployed on a cluster. MPI is a standard interface (defined
by the MPI forum) for which many implementations are available.
+.. versionadded:: 3.10
+ Major overhaul of the module: many new variables, per-language components,
+ support for a wider variety of runtimes.
+
Variables for using MPI
^^^^^^^^^^^^^^^^^^^^^^^
@@ -50,7 +54,8 @@ project, where ``<lang>`` is one of C, CXX, or Fortran:
``MPI_<lang>_LIBRARIES``
All libraries to link MPI programs against.
-Additionally, the following :prop_tgt:`IMPORTED` targets are defined:
+.. versionadded:: 3.9
+ Additionally, the following :prop_tgt:`IMPORTED` targets are defined:
``MPI::MPI_<lang>``
Target for using MPI from ``<lang>``.
@@ -236,8 +241,10 @@ If the following variables are set to true, the respective search will be perfor
Backward Compatibility
^^^^^^^^^^^^^^^^^^^^^^
+.. deprecated:: 3.10
+
For backward compatibility with older versions of FindMPI, these
-variables are set, but deprecated:
+variables are set:
::
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake
index 01f04922f9..8b4c397161 100644
--- a/Modules/FindMatlab.cmake
+++ b/Modules/FindMatlab.cmake
@@ -17,6 +17,9 @@ can also be used:
* to retrieve various information from Matlab (mex extensions, versions and
release queries, ...)
+.. versionadded:: 3.12
+ Added Matlab Compiler Runtime (MCR) support.
+
The module supports the following components:
* ``ENG_LIBRARY`` and ``MAT_LIBRARY``: respectively the ``ENG`` and ``MAT``
@@ -28,6 +31,17 @@ The module supports the following components:
* ``MCC_COMPILER`` the MCC compiler, included with the Matlab Compiler add-on.
* ``SIMULINK`` the Simulink environment.
+.. versionadded:: 3.7
+ Added the ``MAT_LIBRARY`` component.
+
+.. versionadded:: 3.13
+ Added the ``ENGINE_LIBRARY``, ``DATAARRAY_LIBRARY`` and ``MCC_COMPILER``
+ components.
+
+.. versionchanged:: 3.14
+ Removed the ``MX_LIBRARY``, ``ENGINE_LIBRARY`` and ``DATAARRAY_LIBRARY``
+ components. These libraries are found unconditionally.
+
.. note::
The version given to the :command:`find_package` directive is the Matlab
@@ -107,8 +121,12 @@ Result variables
Matlab matrix library. Available only if the component ``MAT_LIBRARY``
is requested.
``Matlab_ENGINE_LIBRARY``
+ .. versionadded:: 3.13
+
Matlab C++ engine library, always available for R2018a and newer.
``Matlab_DATAARRAY_LIBRARY``
+ .. versionadded:: 3.13
+
Matlab C++ data array library, always available for R2018a and newer.
``Matlab_LIBRARIES``
the whole set of libraries of Matlab
@@ -116,6 +134,8 @@ Result variables
the mex compiler of Matlab. Currently not used.
Available only if the component ``MEX_COMPILER`` is requested.
``Matlab_MCC_COMPILER``
+ .. versionadded:: 3.13
+
the mcc compiler of Matlab. Included with the Matlab Compiler add-on.
Available only if the component ``MCC_COMPILER`` is requested.
@@ -923,14 +943,26 @@ endfunction()
the same folder without any processing, with the same name as the final
mex file, and with extension `.m`. In that case, typing ``help <name>``
in Matlab prints the documentation contained in this file.
- ``R2017b`` or ``R2018a`` may be given to specify the version of the C API
+ ``R2017b`` or ``R2018a``
+ .. versionadded:: 3.14
+
+ May be given to specify the version of the C API
to use: ``R2017b`` specifies the traditional (separate complex) C API,
and corresponds to the ``-R2017b`` flag for the `mex` command. ``R2018a``
specifies the new interleaved complex C API, and corresponds to the
``-R2018a`` flag for the `mex` command. Ignored if MATLAB version prior
to R2018a. Defaults to ``R2017b``.
- ``MODULE`` or ``SHARED`` may be given to specify the type of library to be
- created. ``EXECUTABLE`` may be given to create an executable instead of
+
+ ``MODULE`` or ``SHARED``
+ .. versionadded:: 3.7
+
+ May be given to specify the type of library to be
+ created.
+
+ ``EXECUTABLE``
+ .. versionadded:: 3.7
+
+ May be given to create an executable instead of
a library. If no type is given explicitly, the type is ``SHARED``.
``EXCLUDE_FROM_ALL``
This option has the same meaning as for :prop_tgt:`EXCLUDE_FROM_ALL` and
diff --git a/Modules/FindOpenACC.cmake b/Modules/FindOpenACC.cmake
index ed52e3591f..da050cd4fb 100644
--- a/Modules/FindOpenACC.cmake
+++ b/Modules/FindOpenACC.cmake
@@ -14,6 +14,16 @@ If the compiler supports OpenACC, the flags required to compile with
OpenACC support are returned in variables for the different languages.
Currently, only PGI, GNU and Cray compilers are supported.
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+The module provides :prop_tgt:`IMPORTED` targets:
+
+``OpenACC::OpenACC_<lang>``
+ Target for using OpenACC from ``<lang>``.
+
Variables
^^^^^^^^^
@@ -25,14 +35,11 @@ project, where ``<lang>`` is one of C, CXX, or Fortran:
``OpenACC_<lang>_FLAGS``
OpenACC compiler flags for ``<lang>``, separated by spaces.
``OpenACC_<lang>_OPTIONS``
+ .. versionadded:: 3.16
+
OpenACC compiler flags for ``<lang>``, as a list. Suitable for usage
with target_compile_options or target_link_options.
-Additionally, the module provides :prop_tgt:`IMPORTED` targets:
-
-``OpenACC::OpenACC_<lang>``
- Target for using OpenACC from ``<lang>``.
-
The module will also try to provide the OpenACC version variables:
``OpenACC_<lang>_SPEC_DATE``
diff --git a/Modules/FindOpenCL.cmake b/Modules/FindOpenCL.cmake
index b3e5a9f8de..1b4662b76f 100644
--- a/Modules/FindOpenCL.cmake
+++ b/Modules/FindOpenCL.cmake
@@ -9,9 +9,14 @@ FindOpenCL
Finds Open Computing Language (OpenCL)
+.. versionadded:: 3.10
+ Detection of OpenCL 2.1 and 2.2.
+
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.7
+
This module defines :prop_tgt:`IMPORTED` target ``OpenCL::OpenCL``, if
OpenCL has been found.
diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake
index 110e7f9637..4766102082 100644
--- a/Modules/FindOpenGL.cmake
+++ b/Modules/FindOpenGL.cmake
@@ -7,27 +7,41 @@ FindOpenGL
FindModule for OpenGL and OpenGL Utility Library (GLU).
+.. versionchanged:: 3.2
+ X11 is no longer added as a dependency on Unix/Linux systems.
+
+.. versionadded:: 3.10
+ GLVND support on Linux. See the :ref:`Linux Specific` section below.
+
Optional COMPONENTS
^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 3.10
+
This module respects several optional COMPONENTS: ``EGL``, ``GLX``, and
``OpenGL``. There are corresponding import targets for each of these flags.
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.8
+
This module defines the :prop_tgt:`IMPORTED` targets:
``OpenGL::GL``
- Defined to the platform-specific OpenGL libraries if the system has OpenGL.
-``OpenGL::OpenGL``
- Defined to libOpenGL if the system is GLVND-based.
+ Defined to the platform-specific OpenGL libraries if the system has OpenGL.
``OpenGL::GLU``
- Defined if the system has OpenGL Utility Library (GLU).
+ Defined if the system has OpenGL Utility Library (GLU).
+
+.. versionadded:: 3.10
+ Additionally, the following GLVND-specific library targets are defined:
+
+``OpenGL::OpenGL``
+ Defined to libOpenGL if the system is GLVND-based.
``OpenGL::GLX``
- Defined if the system has OpenGL Extension to the X Window System (GLX).
+ Defined if the system has OpenGL Extension to the X Window System (GLX).
``OpenGL::EGL``
- Defined if the system has EGL.
+ Defined if the system has EGL.
Result Variables
^^^^^^^^^^^^^^^^
@@ -55,6 +69,9 @@ This module sets the following variables:
On Linux, this assumes GLX and is never correct for EGL-based targets.
Clients are encouraged to use the ``OpenGL::*`` import targets instead.
+.. versionadded:: 3.10
+ Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
+
Cache variables
^^^^^^^^^^^^^^^
@@ -72,6 +89,11 @@ The following cache variables may also be set:
Path to the OpenGL library. New code should prefer the ``OpenGL::*`` import
targets.
+.. versionadded:: 3.10
+ Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
+
+.. _`Linux Specific`:
+
Linux-specific
^^^^^^^^^^^^^^
@@ -97,14 +119,14 @@ The value may be one of:
``GLVND``
If the GLVND OpenGL and GLX libraries are available, prefer them.
This forces ``OPENGL_gl_LIBRARY`` to be empty.
- This is the default if components were requested (since components
- correspond to GLVND libraries) or if policy :policy:`CMP0072` is
- set to ``NEW``.
+
+ .. versionchanged:: 3.11
+ This is the default, unless policy :policy:`CMP0072` is set to ``OLD``
+ and no components are requeted (since components
+ correspond to GLVND libraries).
``LEGACY``
Prefer to use the legacy libGL library, if available.
- This is the default if no components were requested and
- policy :policy:`CMP0072` is not set to ``NEW``.
For EGL targets the client must rely on GLVND support on the user's system.
Linking should use the ``OpenGL::OpenGL OpenGL::EGL`` targets. Using GLES*
diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index bb38e28e1a..fc5bffa347 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -13,11 +13,15 @@ OpenMP support are returned in variables for the different languages.
The variables may be empty if the compiler does not need a special
flag to support OpenMP.
+.. versionadded:: 3.5
+ Clang support.
+
Variables
^^^^^^^^^
-The module exposes the components ``C``, ``CXX``, and ``Fortran``.
-Each of these controls the various languages to search OpenMP support for.
+.. versionadded:: 3.10
+ The module exposes the components ``C``, ``CXX``, and ``Fortran``.
+ Each of these controls the various languages to search OpenMP support for.
Depending on the enabled components the following variables will be set:
@@ -65,6 +69,8 @@ Specifically for Fortran, the module sets the following variables:
The module will also try to provide the OpenMP version variables:
``OpenMP_<lang>_SPEC_DATE``
+ .. versionadded:: 3.7
+
Date of the OpenMP specification implemented by the ``<lang>`` compiler.
``OpenMP_<lang>_VERSION_MAJOR``
Major version of OpenMP implemented by the ``<lang>`` compiler.
diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake
index 91a65fddaa..03b699b2e0 100644
--- a/Modules/FindOpenSSL.cmake
+++ b/Modules/FindOpenSSL.cmake
@@ -7,15 +7,22 @@ FindOpenSSL
Find the OpenSSL encryption library.
+.. versionadded:: 3.18
+ Support for OpenSSL 3.0.
+
Optional COMPONENTS
^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 3.12
+
This module supports two optional COMPONENTS: ``Crypto`` and ``SSL``. Both
components have associated imported targets, as described below.
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.4
+
This module defines the following :prop_tgt:`IMPORTED` targets:
``OpenSSL::SSL``
@@ -23,6 +30,8 @@ This module defines the following :prop_tgt:`IMPORTED` targets:
``OpenSSL::Crypto``
The OpenSSL ``crypto`` library, if found.
``OpenSSL::applink``
+ .. versionadded:: 3.18
+
The OpenSSL ``applink`` components that might be need to be compiled into
projects under MSVC. This target is available only if found OpenSSL version
is not less than 0.9.8. By linking this target the above OpenSSL targets can
@@ -75,8 +84,12 @@ Hints
^^^^^
Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
-Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
-Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
+
+.. versionadded:: 3.4
+ Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
+
+.. versionadded:: 3.5
+ Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
#]=======================================================================]
macro(_OpenSSL_test_and_find_dependencies ssl_library crypto_library)
diff --git a/Modules/FindPNG.cmake b/Modules/FindPNG.cmake
index fd0e4e93e9..51f2c7daf5 100644
--- a/Modules/FindPNG.cmake
+++ b/Modules/FindPNG.cmake
@@ -10,6 +10,8 @@ Find libpng, the official reference library for the PNG image format.
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.5
+
This module defines the following :prop_tgt:`IMPORTED` target:
``PNG::PNG``
diff --git a/Modules/FindPackageHandleStandardArgs.cmake b/Modules/FindPackageHandleStandardArgs.cmake
index 7e172779e4..fbcf7cd88b 100644
--- a/Modules/FindPackageHandleStandardArgs.cmake
+++ b/Modules/FindPackageHandleStandardArgs.cmake
@@ -51,7 +51,9 @@ implementing :command:`find_package(<PackageName>)` calls.
(recommended). Not valid in the full signature.
``FOUND_VAR <result-var>``
- Obsolete. Specifies either ``<PackageName>_FOUND`` or
+ .. deprecated:: 3.3
+
+ Specifies either ``<PackageName>_FOUND`` or
``<PACKAGENAME>_FOUND`` as the result variable. This exists only
for compatibility with older versions of CMake and is now ignored.
Result variables of both names are always set for compatibility.
@@ -61,8 +63,10 @@ implementing :command:`find_package(<PackageName>)` calls.
These may be named in the generated failure message asking the
user to set the missing variable values. Therefore these should
typically be cache entries such as ``FOO_LIBRARY`` and not output
- variables like ``FOO_LIBRARIES``. This option is mandatory if
- ``HANDLE_COMPONENTS`` is not specified.
+ variables like ``FOO_LIBRARIES``.
+
+ .. versionchanged:: 3.18
+ If ``HANDLE_COMPONENTS`` is specified, this option can be omitted.
``VERSION_VAR <version-var>``
Specify the name of a variable that holds the version of the package
@@ -74,6 +78,8 @@ implementing :command:`find_package(<PackageName>)` calls.
if the version is ok or not.
``HANDLE_VERSION_RANGE``
+ .. versionadded:: 3.19
+
Enable handling of a version range, if one is specified. Without this
option, a developer warning will be displayed if a version range is
specified.
@@ -94,6 +100,8 @@ implementing :command:`find_package(<PackageName>)` calls.
was found.
``REASON_FAILURE_MESSAGE <reason-failure-message>``
+ .. versionadded:: 3.16
+
Specify a custom message of the reason for the failure which will be
appended to the default generated message.
@@ -102,6 +110,8 @@ implementing :command:`find_package(<PackageName>)` calls.
generated message. Not recommended.
``NAME_MISMATCHED``
+ .. versionadded:: 3.17
+
Indicate that the ``<PackageName>`` does not match
``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a
warning, but it may be intentional for usage of the command for components
@@ -163,6 +173,8 @@ message.
.. command:: find_package_check_version
+ .. versionadded:: 3.19
+
Helper function which can be used to check if a ``<version>`` is valid
against version-related arguments of :command:`find_package`.
diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake
index 2ad2c7e174..b41c2c3d2d 100644
--- a/Modules/FindPkgConfig.cmake
+++ b/Modules/FindPkgConfig.cmake
@@ -632,19 +632,38 @@ endmacro()
When the ``QUIET`` argument is given, no status messages will be printed.
- By default, if :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` is 3.1 or
- later, or if :variable:`PKG_CONFIG_USE_CMAKE_PREFIX_PATH` is set to a
- boolean ``True`` value, then the :variable:`CMAKE_PREFIX_PATH`,
- :variable:`CMAKE_FRAMEWORK_PATH`, and :variable:`CMAKE_APPBUNDLE_PATH` cache
- and environment variables will be added to the ``pkg-config`` search path.
- The ``NO_CMAKE_PATH`` and ``NO_CMAKE_ENVIRONMENT_PATH`` arguments
- disable this behavior for the cache variables and environment variables
- respectively.
-
- The ``IMPORTED_TARGET`` argument will create an imported target named
- ``PkgConfig::<prefix>`` that can be passed directly as an argument to
- :command:`target_link_libraries`. The ``GLOBAL`` argument will make the
- imported target available in global scope.
+ .. versionadded:: 3.1
+ The :variable:`CMAKE_PREFIX_PATH`,
+ :variable:`CMAKE_FRAMEWORK_PATH`, and :variable:`CMAKE_APPBUNDLE_PATH` cache
+ and environment variables will be added to the ``pkg-config`` search path.
+ The ``NO_CMAKE_PATH`` and ``NO_CMAKE_ENVIRONMENT_PATH`` arguments
+ disable this behavior for the cache variables and environment variables
+ respectively.
+ The :variable:`PKG_CONFIG_USE_CMAKE_PREFIX_PATH` variable set to ``FALSE``
+ disables this behavior globally.
+
+ .. This didn't actually work until 3.3.
+
+ .. versionadded:: 3.6
+ The ``IMPORTED_TARGET`` argument will create an imported target named
+ ``PkgConfig::<prefix>`` that can be passed directly as an argument to
+ :command:`target_link_libraries`.
+
+ .. This didn't actually work until 3.7.
+
+ .. versionadded:: 3.13
+ The ``GLOBAL`` argument will make the
+ imported target available in global scope.
+
+ .. versionadded:: 3.15
+ Non-library linker options reported by ``pkg-config`` are stored in the
+ :prop_tgt:`INTERFACE_LINK_OPTIONS` target property.
+
+ .. versionchanged:: 3.18
+ Include directories specified with ``-isystem`` are stored in the
+ :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target property. Previous
+ versions of CMake left them in the :prop_tgt:`INTERFACE_COMPILE_OPTIONS`
+ property.
Each ``<moduleSpec>`` can be either a bare module name or it can be a
module name with a version constraint (operators ``=``, ``<``, ``>``,
@@ -683,6 +702,11 @@ endmacro()
All but ``<XXX>_FOUND`` may be a :ref:`;-list <CMake Language Lists>` if the
associated variable returned from ``pkg-config`` has multiple values.
+ .. versionchanged:: 3.18
+ Include directories specified with ``-isystem`` are stored in the
+ ``<XXX>_INCLUDE_DIRS`` variable. Previous versions of CMake left them
+ in ``<XXX>_CFLAGS_OTHER``.
+
There are some special variables whose prefix depends on the number of
``<moduleSpec>`` given. When there is only one ``<moduleSpec>``,
``<YYY>`` will simply be ``<prefix>``, but if two or more ``<moduleSpec>``
@@ -697,6 +721,16 @@ endmacro()
``<YYY>_LIBDIR``
lib directory of the module
+ .. versionchanged:: 3.8
+ For any given ``<prefix>``, ``pkg_check_modules()`` can be called multiple
+ times with different parameters. Previous versions of CMake cached and
+ returned the first successful result.
+
+ .. versionchanged:: 3.16
+ If a full path to the found library can't be determined, but it's still
+ visible to the linker, pass it through as ``-l<name>``. Previous versions
+ of CMake failed in this case.
+
Examples:
.. code-block:: cmake
@@ -768,9 +802,10 @@ endmacro()
[IMPORTED_TARGET [GLOBAL]]
<moduleSpec> [<moduleSpec>...])
- If a module is found, the ``<prefix>_MODULE_NAME`` variable will contain the
- name of the matching module. This variable can be used if you need to run
- :command:`pkg_get_variable`.
+ .. versionadded:: 3.16
+ If a module is found, the ``<prefix>_MODULE_NAME`` variable will contain the
+ name of the matching module. This variable can be used if you need to run
+ :command:`pkg_get_variable`.
Example:
@@ -815,6 +850,8 @@ endmacro()
#[========================================[.rst:
.. command:: pkg_get_variable
+ .. versionadded:: 3.4
+
Retrieves the value of a pkg-config variable ``varName`` and stores it in the
result variable ``resultVar`` in the calling scope.
@@ -849,10 +886,15 @@ Variables Affecting Behavior
This can be set to the path of the pkg-config executable. If not provided,
it will be set by the module as a result of calling :command:`find_program`
- internally. The ``PKG_CONFIG`` environment variable can be used as a hint.
+ internally.
+
+ .. versionadded:: 3.1
+ The ``PKG_CONFIG`` environment variable can be used as a hint.
.. variable:: PKG_CONFIG_USE_CMAKE_PREFIX_PATH
+ .. versionadded:: 3.1
+
Specifies whether :command:`pkg_check_modules` and
:command:`pkg_search_module` should add the paths in the
:variable:`CMAKE_PREFIX_PATH`, :variable:`CMAKE_FRAMEWORK_PATH` and
diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake
index 1970b26a31..cd50d8c047 100644
--- a/Modules/FindPostgreSQL.cmake
+++ b/Modules/FindPostgreSQL.cmake
@@ -10,6 +10,8 @@ Find the PostgreSQL installation.
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.14
+
This module defines :prop_tgt:`IMPORTED` target ``PostgreSQL::PostgreSQL``
if PostgreSQL has been found.
diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake
index 0c9d695bd6..4b1e336893 100644
--- a/Modules/FindProtobuf.cmake
+++ b/Modules/FindProtobuf.cmake
@@ -7,6 +7,13 @@ FindProtobuf
Locate and configure the Google Protocol Buffers library.
+.. versionadded:: 3.6
+ Support for :command:`find_package` version checks.
+
+.. versionchanged:: 3.6
+ All input and output variables use the ``Protobuf_`` prefix.
+ Variables with ``PROTOBUF_`` prefix are still supported for compatibility.
+
The following variables can be set and are optional:
``Protobuf_SRC_ROOT_FOLDER``
@@ -19,8 +26,12 @@ The following variables can be set and are optional:
List of additional directories to be searched for
imported .proto files.
``Protobuf_DEBUG``
+ .. versionadded:: 3.6
+
Show debug messages.
``Protobuf_USE_STATIC_LIBS``
+ .. versionadded:: 3.9
+
Set to ON to force the use of the static libraries.
Default is OFF.
@@ -30,6 +41,8 @@ Defines the following variables:
Found the Google Protocol Buffers library
(libprotobuf & header files)
``Protobuf_VERSION``
+ .. versionadded:: 3.6
+
Version of package found.
``Protobuf_INCLUDE_DIRS``
Include directories for Google Protocol Buffers
@@ -40,7 +53,8 @@ Defines the following variables:
``Protobuf_LITE_LIBRARIES``
The protobuf-lite libraries
-The following :prop_tgt:`IMPORTED` targets are also defined:
+.. versionadded:: 3.9
+ The following :prop_tgt:`IMPORTED` targets are also defined:
``protobuf::libprotobuf``
The protobuf library.
@@ -49,7 +63,8 @@ The following :prop_tgt:`IMPORTED` targets are also defined:
``protobuf::libprotoc``
The protoc library.
``protobuf::protoc``
- The protoc compiler.
+ .. versionadded:: 3.10
+ The protoc compiler.
The following cache variables are also available to set or use:
@@ -101,7 +116,8 @@ Example:
``HDRS``
Variable to define with autogenerated header files
``DESCRIPTORS``
- Variable to define with autogenerated descriptor files, if requested.
+ .. versionadded:: 3.10
+ Variable to define with autogenerated descriptor files, if requested.
``EXPORT_MACRO``
is a macro which should expand to ``__declspec(dllexport)`` or
``__declspec(dllimport)`` depending on what is being compiled.
@@ -110,6 +126,8 @@ Example:
.. command:: protobuf_generate_python
+ .. versionadded:: 3.4
+
Add custom commands to process ``.proto`` files to Python::
protobuf_generate_python (<PY> [<ARGN>...])
diff --git a/Modules/FindPython.cmake b/Modules/FindPython.cmake
index b8b32c061c..a4b7a0385c 100644
--- a/Modules/FindPython.cmake
+++ b/Modules/FindPython.cmake
@@ -34,7 +34,7 @@ The following components are supported:
* ``NumPy``: search for NumPy include directories.
.. versionadded:: 3.14
- Added ``NumPy`` component.
+ Added the ``NumPy`` component.
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
diff --git a/Modules/FindPython2.cmake b/Modules/FindPython2.cmake
index 6b722ff55c..bb965b9d3c 100644
--- a/Modules/FindPython2.cmake
+++ b/Modules/FindPython2.cmake
@@ -34,7 +34,7 @@ The following components are supported:
* ``NumPy``: search for NumPy include directories.
.. versionadded:: 3.14
- Added ``NumPy`` component.
+ Added the ``NumPy`` component.
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
diff --git a/Modules/FindPython3.cmake b/Modules/FindPython3.cmake
index 9e2133ddce..f826fcfe29 100644
--- a/Modules/FindPython3.cmake
+++ b/Modules/FindPython3.cmake
@@ -34,7 +34,7 @@ The following components are supported:
* ``NumPy``: search for NumPy include directories.
.. versionadded:: 3.14
- Added ``NumPy`` component.
+ Added the ``NumPy`` component.
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
diff --git a/Modules/FindQt.cmake b/Modules/FindQt.cmake
index d6a06628e6..44a1f414c5 100644
--- a/Modules/FindQt.cmake
+++ b/Modules/FindQt.cmake
@@ -5,14 +5,14 @@
FindQt
------
+.. deprecated:: 3.14
+ This module is available only if policy :policy:`CMP0084` is not set to ``NEW``.
+
Searches for all installed versions of Qt3 or Qt4.
This module cannot handle Qt5 or any later versions.
For those, see :manual:`cmake-qt(7)`.
-This module exists for the :command:`find_package` command only if
-policy :policy:`CMP0084` is not set to ``NEW``.
-
This module should only be used if your project can work with multiple
versions of Qt. If not, you should just directly use FindQt4 or
FindQt3. If multiple versions of Qt are found on the machine, then
diff --git a/Modules/FindRuby.cmake b/Modules/FindRuby.cmake
index d12f8255d5..ee07f83451 100644
--- a/Modules/FindRuby.cmake
+++ b/Modules/FindRuby.cmake
@@ -37,7 +37,8 @@ This module will set the following variables in your project:
``Ruby_INCLUDE_DIRS``
include dirs to be used when using the ruby library
``Ruby_LIBRARIES``
- libraries needed to use ruby from C.
+ .. versionadded:: 3.18
+ libraries needed to use ruby from C.
``Ruby_VERSION``
the version of ruby which was found, e.g. "1.8.7"
``Ruby_VERSION_MAJOR``
@@ -47,9 +48,10 @@ This module will set the following variables in your project:
``Ruby_VERSION_PATCH``
Ruby patch version.
-
-The following variables are also provided for compatibility reasons,
-don't use them in new code:
+.. versionchanged:: 3.18
+ Previous versions of CMake used the ``RUBY_`` prefix for all variables.
+ The following variables are provided for compatibility reasons,
+ don't use them in new code:
``RUBY_EXECUTABLE``
same as Ruby_EXECUTABLE.
@@ -67,6 +69,8 @@ don't use them in new code:
Hints
^^^^^
+.. versionadded:: 3.18
+
``Ruby_ROOT_DIR``
Define the root directory of a Ruby installation.
diff --git a/Modules/FindSDL.cmake b/Modules/FindSDL.cmake
index 59eddbbc99..c68e18d96a 100644
--- a/Modules/FindSDL.cmake
+++ b/Modules/FindSDL.cmake
@@ -11,6 +11,8 @@ Locate the SDL library
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.19
+
This module defines the following :prop_tgt:`IMPORTED` target:
``SDL::SDL``
@@ -36,6 +38,10 @@ This module will set the following variables in your project:
``SDL_VERSION_PATCH``
SDL patch version
+.. versionadded:: 3.19
+ Added the ``SDL_INCLUDE_DIRS``, ``SDL_LIBRARIES`` and ``SDL_VERSION[_<PART>]``
+ variables.
+
Cache variables
^^^^^^^^^^^^^^^
@@ -63,6 +69,8 @@ This module responds to the flag:
Obsolete variables
^^^^^^^^^^^^^^^^^^
+.. deprecated:: 3.19
+
These variables are obsolete and provided for backwards compatibility:
``SDL_VERSION_STRING``
diff --git a/Modules/FindSWIG.cmake b/Modules/FindSWIG.cmake
index 87a3894634..4c7ad89dca 100644
--- a/Modules/FindSWIG.cmake
+++ b/Modules/FindSWIG.cmake
@@ -7,14 +7,17 @@ FindSWIG
Find the Simplified Wrapper and Interface Generator (SWIG_) executable.
-This module finds an installed SWIG and determines its version. If a
-``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` argument is given to the
-:command:`find_package` command, it will also determine supported target
-languages.
-
-When a version is requested, it can be specified as a simple value or as a
-range. For a detailed description of version range usage and capabilities,
-refer to the :command:`find_package` command.
+This module finds an installed SWIG and determines its version.
+
+.. versionadded:: 3.18
+ If a ``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` argument is given to the
+ :command:`find_package` command, it will also determine supported target
+ languages.
+
+.. versionadded:: 3.19
+ When a version is requested, it can be specified as a simple value or as a
+ range. For a detailed description of version range usage and capabilities,
+ refer to the :command:`find_package` command.
The module defines the following variables:
diff --git a/Modules/FindSquish.cmake b/Modules/FindSquish.cmake
index 91d1410086..9a17fdbafa 100644
--- a/Modules/FindSquish.cmake
+++ b/Modules/FindSquish.cmake
@@ -47,7 +47,8 @@ to cmake using Squish >= 4.x:
AUT targetName SUITE suiteName TEST squishTestName
[SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] )
-
+.. versionchanged:: 3.18
+ In previous CMake versions, this function was named ``squish_v4_add_test``.
The arguments have the following meaning:
diff --git a/Modules/FindSubversion.cmake b/Modules/FindSubversion.cmake
index 07cb770cf3..7a9c440f67 100644
--- a/Modules/FindSubversion.cmake
+++ b/Modules/FindSubversion.cmake
@@ -31,9 +31,12 @@ If the command line client executable is found two macros are defined:
``Subversion_WC_INFO`` extracts information of a subversion working copy at a
given location. This macro defines the following variables if running
Subversion's ``info`` command on ``<dir>`` succeeds; otherwise a
-``SEND_ERROR`` message is generated. The error can be ignored by providing the
-``IGNORE_SVN_FAILURE`` option, which causes these variables to remain
-undefined.
+``SEND_ERROR`` message is generated.
+
+.. versionadded:: 3.13
+ The error can be ignored by providing the
+ ``IGNORE_SVN_FAILURE`` option, which causes these variables to remain
+ undefined.
::
diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake
index 3b74c94f0c..ed2657c4ab 100644
--- a/Modules/FindTIFF.cmake
+++ b/Modules/FindTIFF.cmake
@@ -17,12 +17,16 @@ imported target, as described below.
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.5
+
This module defines the following :prop_tgt:`IMPORTED` targets:
``TIFF::TIFF``
The TIFF library, if found.
``TIFF::CXX``
+ .. versionadded:: 3.19
+
The C++ wrapper libtiffxx, if requested by the `COMPONENTS CXX` option,
if the compiler is not MSVC (which includes the C++ wrapper in libtiff),
and if found.
@@ -56,6 +60,9 @@ The following cache variables may also be set:
the path to the TIFFXX library for release configurations
``TIFFXX_LIBRARY_DEBUG``
the path to the TIFFXX library for debug configurations
+
+.. versionadded:: 3.4
+ Debug and Release variants are found separately.
#]=======================================================================]
cmake_policy(PUSH)
diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake
index e3e6591a36..87e88bc318 100644
--- a/Modules/FindThreads.cmake
+++ b/Modules/FindThreads.cmake
@@ -10,6 +10,8 @@ This module determines the thread library of the system.
Imported Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.1
+
This module defines the following :prop_tgt:`IMPORTED` target:
``Threads::Threads``
@@ -38,6 +40,8 @@ Variables Affecting Behavior
.. variable:: THREADS_PREFER_PTHREAD_FLAG
+ .. versionadded:: 3.1
+
If the use of the -pthread compiler and linker flag is preferred then
the caller can set this variable to TRUE. The compiler flag can only be
used with the imported target. Use of both the imported target as well
diff --git a/Modules/FindVulkan.cmake b/Modules/FindVulkan.cmake
index 0ec60133ce..ceb1921e9e 100644
--- a/Modules/FindVulkan.cmake
+++ b/Modules/FindVulkan.cmake
@@ -16,8 +16,9 @@ IMPORTED Targets
This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if
Vulkan has been found.
-This module defines :prop_tgt:`IMPORTED` target ``Vulkan::glslc``, if
-Vulkan and the GLSLC SPIR-V compiler has been found.
+.. versionadded:: 3.19
+ This module defines :prop_tgt:`IMPORTED` target ``Vulkan::glslc``, if
+ Vulkan and the GLSLC SPIR-V compiler has been found.
Result Variables
^^^^^^^^^^^^^^^^
@@ -37,6 +38,8 @@ The module will also define three cache variables::
Hints
^^^^^
+.. versionadded:: 3.18
+
The ``VULKAN_SDK`` environment variable optionally specifies the
location of the Vulkan SDK root directory for the given
architecture. It is typically set by sourcing the toplevel
diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake
index a865597afa..d480fc4803 100644
--- a/Modules/FindX11.cmake
+++ b/Modules/FindX11.cmake
@@ -17,6 +17,9 @@ Try to find X11 on UNIX systems. The following values are defined
and also the following more fine grained variables and targets:
+.. versionadded:: 3.14
+ Imported targets.
+
::
X11_ICE_INCLUDE_PATH, X11_ICE_LIB, X11_ICE_FOUND, X11::ICE
@@ -62,6 +65,23 @@ and also the following more fine grained variables and targets:
X11_Xshape_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xshape_FOUND
X11_XSync_INCLUDE_PATH, (in X11_Xext_LIB), X11_XSync_FOUND
X11_Xaw_INCLUDE_PATH, X11_Xaw_LIB X11_Xaw_FOUND X11::Xaw
+
+.. versionadded:: 3.14
+ Renamed ``Xxf86misc``, ``X11_Xxf86misc``, ``X11_Xxf86vm``, ``X11_xkbfile``,
+ ``X11_Xtst``, and ``X11_Xss`` libraries to match their file names.
+ Deprecated the ``X11_Xinput`` library. Old names are still available
+ for compatibility.
+
+.. versionadded:: 3.14
+ Added the ``X11_Xext_INCLUDE_PATH`` variable.
+
+.. versionadded:: 3.18
+ Added the ``xcb``, ``X11-xcb``, ``xcb-icccm``, ``xcb-xkb``, ``xkbcommon``,
+ and ``xkbcommon-X11`` libraries.
+
+.. versionadded:: 3.19
+ Added the ``Xaw``, ``xcb_util``, and ``xcb_xfixes`` libraries.
+
#]=======================================================================]
if (UNIX)
diff --git a/Modules/FindXercesC.cmake b/Modules/FindXercesC.cmake
index abe18c0570..af1b0b438f 100644
--- a/Modules/FindXercesC.cmake
+++ b/Modules/FindXercesC.cmake
@@ -12,6 +12,8 @@ Find the Apache Xerces-C++ validating XML parser headers and libraries.
Imported targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.5
+
This module defines the following :prop_tgt:`IMPORTED` targets:
``XercesC::XercesC``
@@ -40,6 +42,9 @@ The following cache variables may also be set:
the directory containing the Xerces headers
``XercesC_LIBRARY``
the Xerces library
+
+.. versionadded:: 3.4
+ Debug and Release variants are found separately.
#]=======================================================================]
# Written by Roger Leigh <rleigh@codelibre.net>
diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake
index 79e2313d5a..5778b031b3 100644
--- a/Modules/FindZLIB.cmake
+++ b/Modules/FindZLIB.cmake
@@ -10,6 +10,8 @@ Find the native ZLIB includes and library.
IMPORTED Targets
^^^^^^^^^^^^^^^^
+.. versionadded:: 3.1
+
This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
ZLIB has been found.
@@ -32,6 +34,9 @@ This module defines the following variables:
ZLIB_VERSION_PATCH - The patch version of zlib
ZLIB_VERSION_TWEAK - The tweak version of zlib
+.. versionadded:: 3.4
+ Debug and Release variants are found separately.
+
Backward Compatibility
^^^^^^^^^^^^^^^^^^^^^^
diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake
index eab09f157a..63af9b68de 100644
--- a/Modules/FindwxWidgets.cmake
+++ b/Modules/FindwxWidgets.cmake
@@ -14,6 +14,12 @@ package:
find_package(wxWidgets COMPONENTS core base ... OPTIONAL_COMPONENTS net ...)
+.. versionadded:: 3.4
+ Support for :command:`find_package` version argument; ``webview`` component.
+
+.. versionadded:: 3.14
+ ``OPTIONAL_COMPONENTS`` support.
+
There are two search branches: a windows style and a unix style. For
windows, the following variables are searched for and set to defaults
in case of multiple choices. Change them if the defaults are not
@@ -82,6 +88,9 @@ and unix style:
"`wx-config --cxxflags`".
wxWidgets_USE_FILE - Convenience include file.
+.. versionadded:: 3.11
+ The following environment variables can be used as hints: ``WX_CONFIG``,
+ ``WXRC_CMD``.
Sample usage:
diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake
index 888f7b1650..37869fbabd 100644
--- a/Modules/GNUInstallDirs.cmake
+++ b/Modules/GNUInstallDirs.cmake
@@ -46,7 +46,8 @@ where ``<dir>`` is one of:
``LOCALSTATEDIR``
modifiable single-machine data (``var``)
``RUNSTATEDIR``
- run-time variable data (``LOCALSTATEDIR/run``)
+ .. versionadded:: 3.9
+ run-time variable data (``LOCALSTATEDIR/run``)
``LIBDIR``
object code libraries (``lib`` or ``lib64``
or ``lib/<multiarch-tuple>`` on Debian)
@@ -73,6 +74,8 @@ used and the value will appear in the cache for editing by the user.
Special Cases
^^^^^^^^^^^^^
+.. versionadded:: 3.4
+
The following values of :variable:`CMAKE_INSTALL_PREFIX` are special:
``/``
@@ -115,6 +118,8 @@ Macros
GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
+ .. versionadded:: 3.7
+
Set the given variable ``absvar`` to the absolute path contained
within the variable ``var``. This is to allow the computation of an
absolute path, accounting for all the special cases documented
@@ -123,6 +128,10 @@ Macros
allow users who create additional path variables to also compute
absolute paths where necessary, using the same logic. ``dirname`` is
the directory name to get, e.g. ``BINDIR``.
+
+ .. versionchanged:: 3.20
+ Added the ``<dirname>`` parameter. Previous versions of CMake passed
+ this value through the variable ``${dir}``.
#]=======================================================================]
cmake_policy(PUSH)
diff --git a/Modules/GenerateExportHeader.cmake b/Modules/GenerateExportHeader.cmake
index e4481f66d1..bc1eb1799f 100644
--- a/Modules/GenerateExportHeader.cmake
+++ b/Modules/GenerateExportHeader.cmake
@@ -9,6 +9,9 @@ Function for generation of export macros for libraries
This module provides the function ``GENERATE_EXPORT_HEADER()``.
+.. versionadded:: 3.12
+ Added support for C projects. Previous versions supported C++ project only.
+
The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file
suitable for preprocessor inclusion which contains EXPORT macros to be
used in library classes::
@@ -27,7 +30,6 @@ used in library classes::
[CUSTOM_CONTENT_FROM_VARIABLE <variable>]
)
-
The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>`
and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate
compile flags for targets. See the documentation of those target properties,
@@ -170,20 +172,30 @@ For example:
Generates the macros ``VTK_SOMELIB_EXPORT`` etc.
+.. versionadded:: 3.1
+ Library target can be an ``OBJECT`` library.
+
+.. versionadded:: 3.7
+ Added the ``CUSTOM_CONTENT_FROM_VARIABLE`` option.
+
+.. versionadded:: 3.11
+ Added the ``INCLUDE_GUARD_NAME`` option.
+
::
ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] )
+.. deprecated:: 3.0
+ Set the target properties
+ :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and
+ :prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead.
+
The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to
:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` if supported, and is a no-op
on Windows which does not need extra compiler flags for exporting support.
You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS``
that will be populated with the ``CXX_FLAGS`` required to enable visibility
support for the compiler/architecture in use.
-
-This function is deprecated. Set the target properties
-:prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and
-:prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead.
#]=======================================================================]
include(CheckCCompilerFlag)
diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake
index c99c7725a9..f325cfb867 100644
--- a/Modules/GetPrerequisites.cmake
+++ b/Modules/GetPrerequisites.cmake
@@ -25,6 +25,9 @@ files:
ldd (Linux/Unix)
otool (Mac OSX)
+.. versionchanged:: 3.16
+ The tool specified by ``CMAKE_OBJDUMP`` will be used, if set.
+
The following functions are provided by this module:
::
@@ -42,9 +45,6 @@ The following functions are provided by this module:
(projects can override with gp_resolved_file_type_override)
gp_file_type
-Requires CMake 2.6 or greater because it uses function, break, return
-and PARENT_SCOPE.
-
::
GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse>
@@ -67,8 +67,9 @@ searched first when a target without any path info is given. Then
standard system locations are also searched: PATH, Framework
locations, /usr/lib...
-The variable GET_PREREQUISITES_VERBOSE can be set to true to enable verbose
-output.
+.. versionadded:: 3.14
+ The variable GET_PREREQUISITES_VERBOSE can be set to true to enable verbose
+ output.
::
diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake
index 057b29d6da..2ea9e74250 100644
--- a/Modules/GoogleTest.cmake
+++ b/Modules/GoogleTest.cmake
@@ -101,6 +101,8 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
with the list of discovered test cases. This allows the caller to do
things like manipulate test properties of the discovered tests.
+ Usage example:
+
.. code-block:: cmake
include(GoogleTest)
@@ -157,6 +159,8 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
[DISCOVERY_MODE <POST_BUILD|PRE_TEST>]
)
+ .. versionadded:: 3.10
+
``gtest_discover_tests()`` sets up a post-build command on the test executable
that generates the list of tests by parsing the output from running the test
with the ``--gtest_list_tests`` argument. Compared to the source parsing
@@ -223,6 +227,8 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
Note that this variable is only available in CTest.
``DISCOVERY_TIMEOUT num``
+ .. versionadded:: 3.10.3
+
Specifies how long (in seconds) CMake will wait for the test to enumerate
available tests. If the test takes longer than this, discovery (and your
build) will fail. Most test executables will enumerate their tests very
@@ -241,6 +247,8 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
and 3.10.2 has not been preserved.
``XML_OUTPUT_DIR dir``
+ .. versionadded:: 3.18
+
If specified, the parameter is passed along with ``--gtest_output=xml:``
to test executable. The actual file name is the same as the test target,
including prefix and suffix. This should be used instead of
@@ -248,6 +256,8 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
XML result output when using parallel test execution.
``DISCOVERY_MODE``
+ .. versionadded:: 3.18
+
Provides greater control over when ``gtest_discover_tests()`` performs test
discovery. By default, ``POST_BUILD`` sets up a post-build command
to perform test discovery at build time. In certain scenarios, like
diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake
index caca6977ba..c34b8198aa 100644
--- a/Modules/InstallRequiredSystemLibraries.cmake
+++ b/Modules/InstallRequiredSystemLibraries.cmake
@@ -27,14 +27,17 @@ may be set prior to including the module to adjust behavior:
tools even if the release runtime libraries are also available.
``CMAKE_INSTALL_UCRT_LIBRARIES``
+ .. versionadded:: 3.6
+
Set to TRUE to install the Windows Universal CRT libraries for
app-local deployment (e.g. to Windows XP). This is meaningful
only with MSVC from Visual Studio 2015 or higher.
- One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
- to an absolute path to tell CMake to look for Windows 10 SDKs in
- a custom location. The specified directory is expected to contain
- ``Redist/ucrt/DLLs/*`` directories.
+ .. versionadded:: 3.9
+ One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
+ to an absolute path to tell CMake to look for Windows 10 SDKs in
+ a custom location. The specified directory is expected to contain
+ ``Redist/ucrt/DLLs/*`` directories.
``CMAKE_INSTALL_MFC_LIBRARIES``
Set to TRUE to install the MSVC MFC runtime libraries.
@@ -53,8 +56,13 @@ may be set prior to including the module to adjust behavior:
not provide the redistributable files.)
``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT``
+ .. versionadded:: 3.3
+
Specify the :command:`install(PROGRAMS)` command ``COMPONENT``
option. If not specified, no such option will be used.
+
+.. versionadded:: 3.10
+ Support for installing Intel compiler runtimes.
#]=======================================================================]
cmake_policy(PUSH)
diff --git a/Modules/ProcessorCount.cmake b/Modules/ProcessorCount.cmake
index 43ec889b66..bda23ab682 100644
--- a/Modules/ProcessorCount.cmake
+++ b/Modules/ProcessorCount.cmake
@@ -15,6 +15,9 @@ Otherwise it is set to 0. Currently this functionality is implemented
for AIX, cygwin, FreeBSD, HPUX, Linux, macOS, QNX, Sun and
Windows.
+.. versionchanged:: 3.15
+ On Linux, returns the container CPU count instead of the host CPU count.
+
This function is guaranteed to return a positive integer (>=1) if it
succeeds. It returns 0 if there's a problem determining the processor
count.
diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake
index bbd469eb80..a5f8a08e42 100644
--- a/Modules/UseJava.cmake
+++ b/Modules/UseJava.cmake
@@ -36,17 +36,21 @@ compiling the java sources and also to the dependencies of the target.
For backwards compatibility, jar files listed as sources are ignored (as
they have been since the first version of this module).
+.. versionadded:: 3.4
+ Support fot response files (prefixed by ``@``) in the ``SOURCES`` list.
+
The default ``OUTPUT_DIR`` can also be changed by setting the variable
``CMAKE_JAVA_TARGET_OUTPUT_DIR``.
-Optionally, using option ``GENERATE_NATIVE_HEADERS``, native header files can
-be generated for methods declared as native. These files provide the
-connective glue that allow your Java and C code to interact. An INTERFACE
-target will be created for an easy usage of generated files. Sub-option
-``DESTINATION`` can be used to specify the output directory for generated
-header files.
+.. versionadded:: 3.11
+ Optionally, using option ``GENERATE_NATIVE_HEADERS``, native header files can
+ be generated for methods declared as native. These files provide the
+ connective glue that allow your Java and C code to interact. An INTERFACE
+ target will be created for an easy usage of generated files. Sub-option
+ ``DESTINATION`` can be used to specify the output directory for generated
+ header files.
-``GENERATE_NATIVE_HEADERS`` option requires, at least, version 1.8 of the JDK.
+ ``GENERATE_NATIVE_HEADERS`` option requires, at least, version 1.8 of the JDK.
The ``add_jar()`` function sets the following target properties on
``<target_name>``:
@@ -77,6 +81,9 @@ described above, and is used by ``install_jar_exports()``. You can get this
information with :command:`get_property` and the ``INSTALL_DESTINATION``
property key.
+.. versionadded:: 3.4
+ The second signature with ``DESTINATION`` and ``COMPONENT`` options.
+
.. code-block:: cmake
install_jni_symlink(<target_name> <destination>)
@@ -86,6 +93,14 @@ This command installs the ``<target_name>`` JNI symlinks to the given
``<destination>``. It should be called in the same scope as ``add_jar()`` or
it will fail.
+.. versionadded:: 3.4
+ The second signature with ``DESTINATION`` and ``COMPONENT`` options.
+
+Exporting JAR Targets
+^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.7
+
.. code-block:: cmake
install_jar_exports(TARGETS <jars>...
@@ -97,6 +112,9 @@ This command installs a target export file ``<filename>`` for the named jar
targets to the given ``<destination>`` directory. Its function is similar to
that of :command:`install(EXPORTS)`.
+.. versionadded:: 3.9
+ The ``NAMESPACE`` option.
+
.. code-block:: cmake
export_jars(TARGETS <jars>...
@@ -106,6 +124,9 @@ that of :command:`install(EXPORTS)`.
This command writes a target export file ``<filename>`` for the named ``<jars>``
targets. Its function is similar to that of :command:`export`.
+.. versionadded:: 3.9
+ The ``NAMESPACE`` option.
+
Examples
""""""""
@@ -316,17 +337,16 @@ Header Generation
[OUTPUT_NAME <path>|OUTPUT_DIR <path>]
)
-Create C header files from java classes. These files provide the connective glue
-that allow your Java and C code to interact.
+.. versionadded:: 3.4
.. deprecated:: 3.11
-
-.. note::
-
This command will no longer be supported starting with version 10 of the JDK
due to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_.
The ``add_jar(GENERATE_NATIVE_HEADERS)`` command should be used instead.
+Create C header files from java classes. These files provide the connective glue
+that allow your Java and C code to interact.
+
There are two main signatures for ``create_javah()``. The first signature
returns generated files through variable specified by the ``GENERATED_FILES``
option. For example:
diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake
index 757e5392b1..9b0025a8fc 100644
--- a/Modules/UseSWIG.cmake
+++ b/Modules/UseSWIG.cmake
@@ -12,6 +12,8 @@ Defines the following command for use with ``SWIG``:
.. command:: swig_add_library
+ .. versionadded:: 3.8
+
Define swig module with given name and specified language::
swig_add_library(<name>
@@ -28,13 +30,16 @@ Defines the following command for use with ``SWIG``:
those targets can be used with any command expecting a target (e.g.
:command:`target_link_libraries`).
- .. note::
-
+ .. versionchanged:: 3.13
This command creates a target with the specified ``<name>`` when
policy :policy:`CMP0078` is set to ``NEW``. Otherwise, the legacy
behavior will choose a different target name and store it in the
``SWIG_MODULE_<name>_REAL_NAME`` variable.
+ .. versionchanged:: 3.15
+ Alternate library name (set with the :prop_tgt:`OUTPUT_NAME` property,
+ for example) will be passed on to Python and CSharp wrapper libraries.
+
.. note::
For multi-config generators, this module does not support
@@ -59,10 +64,23 @@ Defines the following command for use with ``SWIG``:
``LANGUAGE``
Specify the target language.
+ .. versionadded:: 3.1
+ Go and Lua language support.
+
+ .. versionadded:: 3.2
+ R language support.
+
+ .. versionadded:: 3.18
+ Fortran language support.
+
``NO_PROXY``
+ .. versionadded:: 3.12
+
Prevent the generation of the wrapper layer (swig ``-noproxy`` option).
``OUTPUT_DIR``
+ .. versionadded:: 3.12
+
Specify where to write the language specific files (swig ``-outdir``
option). If not given, the ``CMAKE_SWIG_OUTDIR`` variable will be used.
If neither is specified, the default depends on the value of the
@@ -75,6 +93,8 @@ Defines the following command for use with ``SWIG``:
``SWIG_SUPPORT_FILES_DIRECTORY`` target property.
``OUTFILE_DIR``
+ .. versionadded:: 3.12
+
Specify an output directory name where the generated source file will be
placed (swig ``-o`` option). If not specified, the ``SWIG_OUTFILE_DIR``
variable will be used. If neither is specified, ``OUTPUT_DIR`` or
@@ -83,8 +103,11 @@ Defines the following command for use with ``SWIG``:
``SOURCES``
List of sources for the library. Files with extension ``.i`` will be
identified as sources for the ``SWIG`` tool. Other files will be handled in
- the standard way. This behavior can be overridden by specifying the variable
- ``SWIG_SOURCE_FILE_EXTENSIONS``.
+ the standard way.
+
+ .. versionadded:: 3.14
+ This behavior can be overridden by specifying the variable
+ ``SWIG_SOURCE_FILE_EXTENSIONS``.
.. note::
@@ -122,12 +145,22 @@ ensure generated files will receive the required settings.
set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON)
swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
+``SWIG_FLAGS``
+ .. deprecated:: 3.12
+ Replaced with the fine-grained properties that follow.
+
+ Pass custom flags to the SWIG executable.
+
``INCLUDE_DIRECTORIES``, ``COMPILE_DEFINITIONS`` and ``COMPILE_OPTIONS``
+ .. versionadded:: 3.12
+
Add custom flags to SWIG compiler and have same semantic as properties
:prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
:prop_sf:`COMPILE_OPTIONS`.
``USE_TARGET_INCLUDE_DIRECTORIES``
+ .. versionadded:: 3.13
+
If set to ``TRUE``, contents of target property
:prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
If set to ``FALSE`` target property :prop_tgt:`INCLUDE_DIRECTORIES` will be
@@ -135,11 +168,15 @@ ensure generated files will receive the required settings.
will be considered.
``GENERATED_INCLUDE_DIRECTORIES``, ``GENERATED_COMPILE_DEFINITIONS`` and ``GENERATED_COMPILE_OPTIONS``
+ .. versionadded:: 3.12
+
Add custom flags to the C/C++ generated source. They will fill, respectively,
properties :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
:prop_sf:`COMPILE_OPTIONS` of generated C/C++ file.
``DEPENDS``
+ .. versionadded:: 3.12
+
Specify additional dependencies to the source file.
``SWIG_MODULE_NAME``
@@ -151,18 +188,21 @@ ensure generated files will receive the required settings.
set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
- .. note::
-
+ .. versionchanged:: 3.14
If policy :policy:`CMP0086` is set to ``NEW``, ``-module <module_name>``
is passed to ``SWIG`` compiler.
``OUTPUT_DIR``
+ .. versionadded:: 3.19
+
Specify where to write the language specific files (swig ``-outdir`` option)
for the considered source file. If not specified, the other ways to define
the output directory applies (see ``OUTPUT_DIR`` option of
``swig_add_library()`` command).
``OUTFILE_DIR``
+ .. versionadded:: 3.19
+
Specify an output directory where the generated source file will be placed
(swig ``-o`` option) for the considered source file. If not specified,
``OUTPUT_DIR`` source property will be used. If neither are specified, the
@@ -173,6 +213,8 @@ Target library properties can be set to apply same configuration to all SWIG
input files.
``SWIG_INCLUDE_DIRECTORIES``, ``SWIG_COMPILE_DEFINITIONS`` and ``SWIG_COMPILE_OPTIONS``
+ .. versionadded:: 3.12
+
These properties will be applied to all SWIG input files and have same
semantic as target properties :prop_tgt:`INCLUDE_DIRECTORIES`,
:prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`COMPILE_OPTIONS`.
@@ -185,6 +227,8 @@ input files.
set_property(TARGET mymod PROPERTY SWIG_COMPILE_OPTIONS -bla -blb)
``SWIG_USE_TARGET_INCLUDE_DIRECTORIES``
+ .. versionadded:: 3.13
+
If set to ``TRUE``, contents of target property
:prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
If set to ``FALSE`` or not defined, target property
@@ -192,17 +236,23 @@ input files.
overridden by specifying source property ``USE_TARGET_INCLUDE_DIRECTORIES``.
``SWIG_GENERATED_INCLUDE_DIRECTORIES``, ``SWIG_GENERATED_COMPILE_DEFINITIONS`` and ``SWIG_GENERATED_COMPILE_OPTIONS``
+ .. versionadded:: 3.12
+
These properties will populate, respectively, properties
:prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
:prop_sf:`COMPILE_FLAGS` of all generated C/C++ files.
``SWIG_DEPENDS``
+ .. versionadded:: 3.12
+
Add dependencies to all SWIG input files.
The following target properties are output properties and can be used to get
information about support files generated by ``SWIG`` interface compilation.
``SWIG_SUPPORT_FILES``
+ .. versionadded:: 3.12
+
This output property list of wrapper files generated during SWIG compilation.
.. code-block:: cmake
@@ -219,6 +269,8 @@ information about support files generated by ``SWIG`` interface compilation.
``SWIG_SUPPORT_FILES_DIRECTORY`` property to handle support files.
``SWIG_SUPPORT_FILES_DIRECTORY``
+ .. versionadded:: 3.12
+
This output property specifies the directory where support files will be
generated.
@@ -231,6 +283,8 @@ Some variables can be set to customize the behavior of ``swig_add_library``
as well as ``SWIG``:
``UseSWIG_MODULE_VERSION``
+ .. versionadded:: 3.12
+
Specify different behaviors for ``UseSWIG`` module.
* Set to 1 or undefined: Legacy behavior is applied.
@@ -244,6 +298,8 @@ as well as ``SWIG``:
Specify where to write the language specific files (swig ``-outdir`` option).
``SWIG_OUTFILE_DIR``
+ .. versionadded:: 3.8
+
Specify an output directory name where the generated source file will be
placed. If not specified, ``CMAKE_SWIG_OUTDIR`` is used.
@@ -251,6 +307,8 @@ as well as ``SWIG``:
Specify extra dependencies for the generated module for ``<name>``.
``SWIG_SOURCE_FILE_EXTENSIONS``
+ .. versionadded:: 3.14
+
Specify a list of source file extensions to override the default
behavior of considering only ``.i`` files as sources for the ``SWIG``
tool. For example:
diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake
index 5100035b39..650c02e595 100644
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ b/Modules/WriteCompilerDetectionHeader.cmake
@@ -80,19 +80,28 @@ Possible compiler identifiers are documented with the
Available features in this version of CMake are listed in the
:prop_gbl:`CMAKE_C_KNOWN_FEATURES` and
:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties.
-The ``{c,cxx}_std_*`` meta-features are ignored if requested.
-
See the :manual:`cmake-compile-features(7)` manual for information on
compile features.
-``BARE_FEATURES`` will define the compatibility macros with the name used in
-newer versions of the language standard, so the code can use the new feature
-name unconditionally.
+.. versionadded:: 3.2
+ Added ``MSVC`` and ``AppleClang`` compiler support.
+
+.. versionadded:: 3.6
+ Added ``Intel`` compiler support.
+
+.. versionchanged:: 3.8
+ The ``{c,cxx}_std_*`` meta-features are ignored if requested.
+
+.. versionadded:: 3.8
+ ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause
+ the module to generate conditions that treat unknown compilers as simply
+ lacking all features. Without these options the default behavior is to
+ generate a ``#error`` for unknown compilers and versions.
-``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause
-the module to generate conditions that treat unknown compilers as simply
-lacking all features. Without these options the default behavior is to
-generate a ``#error`` for unknown compilers and versions.
+.. versionadded:: 3.12
+ ``BARE_FEATURES`` will define the compatibility macros with the name used in
+ newer versions of the language standard, so the code can use the new feature
+ name unconditionally.
Feature Test Macros
===================
diff --git a/Tests/RunCMake/CMP0106/CMP0106-NEW-stderr.txt b/Tests/RunCMake/CMP0106/CMP0106-NEW-stderr.txt
index 7ad774e96c..8a4d7e4306 100644
--- a/Tests/RunCMake/CMP0106/CMP0106-NEW-stderr.txt
+++ b/Tests/RunCMake/CMP0106/CMP0106-NEW-stderr.txt
@@ -1,4 +1,4 @@
-CMake Error at .*/Modules/Documentation.cmake:15 \(message\):
+CMake Error at .*/Modules/Documentation.cmake:[0-9]+ \(message\):
Documentation.cmake is VTK-specific code and should not be used in non-VTK
projects. This logic in this module is best shipped with the project using
it rather than with CMake. This is now an error according to policy
diff --git a/Tests/RunCMake/CMP0106/CMP0106-WARN-stderr.txt b/Tests/RunCMake/CMP0106/CMP0106-WARN-stderr.txt
index d0d48d0b12..af6bb051fa 100644
--- a/Tests/RunCMake/CMP0106/CMP0106-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0106/CMP0106-WARN-stderr.txt
@@ -8,7 +8,7 @@ Call Stack \(most recent call first\):
CMakeLists.txt:7 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Warning \(dev\) at .*/Modules/Documentation.cmake:27 \(message\):
+CMake Warning \(dev\) at .*/Modules/Documentation.cmake:[0-9]+ \(message\):
Policy CMP0106 is not set: The Documentation module is removed. Run "cmake
--help-policy CMP0106" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
@@ -22,7 +22,7 @@ Call Stack \(most recent call first\):
CMakeLists.txt:7 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Warning \(dev\) at .*/Modules/Documentation.cmake:27 \(message\):
+CMake Warning \(dev\) at .*/Modules/Documentation.cmake:[0-9]+ \(message\):
Policy CMP0106 is not set: The Documentation module is removed. Run "cmake
--help-policy CMP0106" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
diff --git a/Utilities/Sphinx/static/cmake.css b/Utilities/Sphinx/static/cmake.css
index b082edec8d..029eb1b2fc 100644
--- a/Utilities/Sphinx/static/cmake.css
+++ b/Utilities/Sphinx/static/cmake.css
@@ -16,3 +16,9 @@ div.sphinxsidebarwrapper {
.literal-block a.reference.internal {
background-color: #dfdfdf;
}
+
+/* Remove unwanted margin in case list item contains a div-wrapping
+ directive like `.. versionadded` or `.. deprecated`. */
+dd > :first-child > p {
+ margin-top: 0px;
+}