Help: Consolidate 3.16 release notes

Run the `Utilities/Release/consolidate-relnotes.bash` script to move
notes from `Help/release/dev/*` into `Help/release/3.16.rst`.
This commit is contained in:
Brad King
2019-10-04 11:00:00 -04:00
parent 395e5f77fc
commit 9c9a6e6023
44 changed files with 220 additions and 295 deletions

219
Help/release/3.16.rst Normal file
View File

@@ -0,0 +1,219 @@
CMake 3.16 Release Notes
************************
.. only:: html
.. contents::
Changes made since CMake 3.15 include the following.
* The :command:`find_package` command has learned to check the following
variables to control searching
* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the
cmake user registry.
* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` has been deprecated.
Instead use :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
* A new target property, :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH`, was
added which removes compiler-defined rpaths from a target. This property is
initialized by :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH`.
* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added.
This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and
:prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as
:prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where
the user has no control over the return code of the test. For example, in
Catch2, the return value is the number of assertion failed, therefore it is
impossible to use it for :prop_test:`SKIP_RETURN_CODE`.
* The command :command:`add_test` learned the option ``COMMAND_EXPAND_LISTS``
which causes lists in the ``COMMAND`` argument to be expanded, including
lists created by generator expressions.
* On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
now produce a linker import file with a ``.imp`` extension in addition
to the executable file. Plugins (created via :command:`add_library` with
the ``MODULE`` option) that use :command:`target_link_libraries` to link
to the executable for its symbols are now linked using the import file.
The :command:`install(TARGETS)` command now installs the import file as
an ``ARCHIVE`` artifact.
* On AIX, runtime linking is no longer enabled by default. CMake provides
the linker enough information to resolve all symbols up front.
One may manually enable runtime linking for shared libraries and/or
loadable modules by adding ``-Wl,-G`` to their link flags
(e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
:variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
One may manually enable runtime linking for executables by adding
``-Wl,-brtl`` to their link flags (e.g. in the
:variable:`CMAKE_EXE_LINKER_FLAGS` variable).
* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix
option for ``moc``. This ensures that ``moc`` output files are identical
on different build setups (given, that the headers compiled by ``moc`` are
in an :command:`include directory <target_include_directories>`).
Also it ensures that ``moc`` output files will compile correctly when the
source and/or build directory is a symbolic link.
The ``moc`` path prefix generation behavior can be configured by setting
the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or
:prop_tgt:`AUTOMOC_PATH_PREFIX` target property.
* :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` now support
:manual:`generator expressions <cmake-generator-expressions(7)>`.
* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands, which
do nothing while returning exit codes of 0 and 1, respectively.
* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the
initial cache script with :variable:`CMAKE_SOURCE_DIR` and
:variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees.
* The Qt Compressed Help file is now named ``CMake.qch``, which no longer
contains the release version in the file name. When CMake is upgraded
in-place, the name and location of this file will remain constant.
Tools such as IDEs, help viewers, etc. should now be able to refer to this
file at a fixed location that remains valid across CMake upgrades.
* ``RPATH`` entries are properly escaped in the intermediary CMake install script.
See policy :policy:`CMP0095`.
* CPack learned :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` to control
what configurations going to be packaged for multi-configuration generators.
* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.
* The :cpack_gen:`CPack Archive Generator` learned to generate `.tar.zst`
packages with Zstandard compression.
* :manual:`ctest(1)` ``--build-makeprogram`` now specifies the make program
used when configuring a project with the Ninja and Makefiles generators
in addition to building it.
* :manual:`ctest(1)` now has the ability to serialize tests based on hardware
requirements for each test. See :ref:`ctest-hardware-allocation` for
details.
* Variable :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` has been
introduced to optionally initialize the
:prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.
* An explicit deprecation diagnostic was added for policy ``CMP0067``
(``CMP0066`` and below were already deprecated).
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
of all policies are deprecated and that projects should port to the
NEW behaviors.
* The :command:`doxygen_add_docs` command from the :module:`FindDoxygen`
module gained a new ``USE_STAMP_FILE`` option. When this option present,
the custom target created by the command will only re-run Doxygen if any
of the source files have changed since the last successful run.
* The :generator:`Eclipse CDT4` extra generator gained a new
:variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` option to specify
the resource encoding.
* The :module:`ExternalProject` module's ``ExternalProject_Add`` command
has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules. See
policy :policy:`CMP0097`.
* The :module:`FindGnuTLS` module now provides an imported target.
* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
now defines a ``<prefix>_MODULE_NAME`` result variable containing the
first matching module name.
* Modules :module:`FindPython3` and :module:`FindPython` gain the capability
to control which ``ABIs`` will be searched.
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
gain the capability to specify directly artifacts.
* Modules :module:`FindPackageHandleStandardArgs` gains the capability to
specify a message giving the reason for the failure.
* The :command:`file` command learned a new sub-command,
``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of
libraries linked by an executable or library. This sub-command is intended as
a replacement for :module:`GetPrerequisites`.
* The :module:`GetPrerequisites` module has been deprecated, as it has been
superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.
* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
:command:`find_package`, and :command:`find_program` commands have learned to
check the following variables to control searching
* :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the searching
the cmake-specific environment variables.
* :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the searching the
cmake-specific cache variables.
* :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the searching
cmake platform specific variables.
* :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the searching of
:variable:`<PackageName>_ROOT` variables.
* :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the searching
the standard system environment variables.
* The :module:`FindGTest` module has been updated to recognize
MSVC build trees generated by GTest 1.8.1.
* The :command:`message` command learned indentation control with the new
:variable:`CMAKE_MESSAGE_INDENT` variable.
* CMake learned to support the Objective C (``OBJC``) and Objective C++
(``OBJCXX``) languages. They may be enabled via the :command:`project`
and :command:`enable_language` commands. When ``OBJC`` or ``OBJCXX``
is enabled, source files with the ``.m`` or ``.mm``, respectively,
will be compiled as Objective C or C++. Otherwise they will be treated
as plain C++ sources as they were before.
* New variables :variable:`CMAKE_<LANG>_LINK_LIBRARY_FLAG`,
:variable:`CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG`, and
:variable:`CMAKE_<LANG>_LINK_LIBRARY_SUFFIX` allow control of the
flag used to specify linking to a library on a per-language basis.
This is useful for mixed-language projects where the different
drivers may use different flags.
* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to tell
generators to use a list of precompile headers for faster compilation
times.
* The :command:`project` no longer strips leading zeros in version components.
See policy :policy:`CMP0096`.
* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool,
when given the path to a symlink to a directory, now removes just
the symlink. It no longer removes content of the linked directory.
* The ``Clang`` compiler is now supported on ``Solaris``.
* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line option
that can be used to redirect ``--trace`` output to a file instead
of ``stderr``.
* The :prop_tgt:`UNITY_BUILD` target property was added to tell
generators to batch include source files for faster compilation
times.
* :prop_tgt:`VS_CONFIGURATION_TYPE` now supports
:manual:`generator expressions <cmake-generator-expressions(7)>`.
* The :prop_tgt:`VS_DPI_AWARE` target property was added to tell
:ref:`Visual Studio Generators` to set the ``EnableDpiAwareness``
property in ``.vcxproj`` files.
* On Windows, existing auto generated exports are now only updated if the
modified time stamp of the exports is not newer than any modified time stamp
of the input files.
* The Xcode generator learnt to set the value of the
``Allow debugging when using document Versions Browser`` schema
option with the :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
target property.

View File

@@ -1,5 +0,0 @@
CMP0095
-------
* ``RPATH`` entries are properly escaped in the intermediary CMake install script.
See policy :policy:`CMP0095`.

View File

@@ -1,5 +0,0 @@
FPHSA-reason-failure-message
----------------------------
* Modules :module:`FindPackageHandleStandardArgs` gains the capability to
specify a message giving the reason for the failure.

View File

@@ -1,4 +0,0 @@
FindGnuTLS-target
-----------------
* The :module:`FindGnuTLS` module now provides an imported target.

View File

@@ -1,6 +0,0 @@
FindPkgConfig-module-name
-------------------------
* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
now defines a ``<prefix>_MODULE_NAME`` result variable containing the
first matching module name.

View File

@@ -1,5 +0,0 @@
FindPython-FIND_ABI
-------------------
* Modules :module:`FindPython3` and :module:`FindPython` gain the capability
to control which ``ABIs`` will be searched.

View File

@@ -1,5 +0,0 @@
FindPython-specify_artifacts
----------------------------
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
gain the capability to specify directly artifacts.

View File

@@ -1,6 +0,0 @@
add-install-remove-environment-rpath
------------------------------------
* A new target property, :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH`, was
added which removes compiler-defined rpaths from a target. This property is
initialized by :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH`.

View File

@@ -1,11 +0,0 @@
add_cmake_find_use_package_registry
-----------------------------------
* The :command:`find_package` command has learned to check the following
variables to control searching
* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the
cmake user registry.
* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` has been deprecated.
Instead use :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`

View File

@@ -1,10 +0,0 @@
add_skip_regular_expression_test_property
-----------------------------------------
* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added.
This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and
:prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as
:prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where
the user has no control over the return code of the test. For example, in
Catch2, the return value is the number of assertion failed, therefore it is
impossible to use it for :prop_test:`SKIP_RETURN_CODE`.

View File

@@ -1,6 +0,0 @@
add_test-expand_lists
---------------------
* The command :command:`add_test` learned the option ``COMMAND_EXPAND_LISTS``
which causes lists in the ``COMMAND`` argument to be expanded, including
lists created by generator expressions.

View File

@@ -1,20 +0,0 @@
aix
---
* On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
now produce a linker import file with a ``.imp`` extension in addition
to the executable file. Plugins (created via :command:`add_library` with
the ``MODULE`` option) that use :command:`target_link_libraries` to link
to the executable for its symbols are now linked using the import file.
The :command:`install(TARGETS)` command now installs the import file as
an ``ARCHIVE`` artifact.
* On AIX, runtime linking is no longer enabled by default. CMake provides
the linker enough information to resolve all symbols up front.
One may manually enable runtime linking for shared libraries and/or
loadable modules by adding ``-Wl,-G`` to their link flags
(e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
:variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
One may manually enable runtime linking for executables by adding
``-Wl,-brtl`` to their link flags (e.g. in the
:variable:`CMAKE_EXE_LINKER_FLAGS` variable).

View File

@@ -1,13 +0,0 @@
automoc_path_prefix
-------------------
* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix
option for ``moc``. This ensures that ``moc`` output files are identical
on different build setups (given, that the headers compiled by ``moc`` are
in an :command:`include directory <target_include_directories>`).
Also it ensures that ``moc`` output files will compile correctly when the
source and/or build directory is a symbolic link.
The ``moc`` path prefix generation behavior can be configured by setting
the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or
:prop_tgt:`AUTOMOC_PATH_PREFIX` target property.

View File

@@ -1,5 +0,0 @@
build-install-rpath-genex
-------------------------
* :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` now support
:manual:`generator expressions <cmake-generator-expressions(7)>`.

View File

@@ -1,5 +0,0 @@
cmake-e-true-false
------------------
* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands, which
do nothing while returning exit codes of 0 and 1, respectively.

View File

@@ -1,6 +0,0 @@
cmake-initial-cache-dirs
------------------------
* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the
initial cache script with :variable:`CMAKE_SOURCE_DIR` and
:variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees.

View File

@@ -1,8 +0,0 @@
cmake-qch-no-version-in-filename
--------------------------------
* The Qt Compressed Help file is now named ``CMake.qch``, which no longer
contains the release version in the file name. When CMake is upgraded
in-place, the name and location of this file will remain constant.
Tools such as IDEs, help viewers, etc. should now be able to refer to this
file at a fixed location that remains valid across CMake upgrades.

View File

@@ -1,5 +0,0 @@
cpack-install-multiple-configurations
-------------------------------------
* CPack learned :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` to control
what configurations going to be packaged for multi-configuration generators.

View File

@@ -1,5 +0,0 @@
cpack-install-scripts
---------------------
* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.

View File

@@ -1,5 +0,0 @@
cpack-zstd
----------
* The :cpack_gen:`CPack Archive Generator` learned to generate `.tar.zst`
packages with Zstandard compression.

View File

@@ -1,6 +0,0 @@
ctest-build-makeprogram-propagated-configure-pass
-------------------------------------------------
* :manual:`ctest(1)` ``--build-makeprogram`` now specifies the make program
used when configuring a project with the Ninja and Makefiles generators
in addition to building it.

View File

@@ -1,6 +0,0 @@
ctest-hardware-allocation
-------------------------
* :manual:`ctest(1)` now has the ability to serialize tests based on hardware
requirements for each test. See :ref:`ctest-hardware-allocation` for
details.

View File

@@ -1,6 +0,0 @@
cuda-CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
--------------------------------------
* Variable :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` has been
introduced to optionally initialize the
:prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.

View File

@@ -1,8 +0,0 @@
deprecate-policy-old
--------------------
* An explicit deprecation diagnostic was added for policy ``CMP0067``
(``CMP0066`` and below were already deprecated).
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
of all policies are deprecated and that projects should port to the
NEW behaviors.

View File

@@ -1,7 +0,0 @@
doxygen-add-docs-USE_STAMP_FILE
-------------------------------
* The :command:`doxygen_add_docs` command from the :module:`FindDoxygen`
module gained a new ``USE_STAMP_FILE`` option. When this option present,
the custom target created by the command will only re-run Doxygen if any
of the source files have changed since the last successful run.

View File

@@ -1,6 +0,0 @@
eclipse-resource-encoding
-------------------------
* The :generator:`Eclipse CDT4` extra generator gained a new
:variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` option to specify
the resource encoding.

View File

@@ -1,6 +0,0 @@
external-project-support-no-git-submodules
------------------------------------------
* The :module:`ExternalProject` module's ``ExternalProject_Add`` command
has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules. See
policy :policy:`CMP0097`.

View File

@@ -1,9 +0,0 @@
get-runtime-dependencies
------------------------
* The :command:`file` command learned a new sub-command,
``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of
libraries linked by an executable or library. This sub-command is intended as
a replacement for :module:`GetPrerequisites`.
* The :module:`GetPrerequisites` module has been deprecated, as it has been
superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.

View File

@@ -1,21 +0,0 @@
global-controls-over-find-locations
-----------------------------------
* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
:command:`find_package`, and :command:`find_program` commands have learned to
check the following variables to control searching
* :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the searching
the cmake-specific environment variables.
* :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the searching the
cmake-specific cache variables.
* :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the searching
cmake platform specific variables.
* :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the searching of
:variable:`<PackageName>_ROOT` variables.
* :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the searching
the standard system environment variables.

View File

@@ -1,5 +0,0 @@
gtest-1.8.1
-----------
* The :module:`FindGTest` module has been updated to recognize
MSVC build trees generated by GTest 1.8.1.

View File

@@ -1,5 +0,0 @@
message-indent
--------------
* The :command:`message` command learned indentation control with the new
:variable:`CMAKE_MESSAGE_INDENT` variable.

View File

@@ -1,9 +0,0 @@
Objective C/C++
---------------
* CMake learned to support the Objective C (``OBJC``) and Objective C++
(``OBJCXX``) languages. They may be enabled via the :command:`project`
and :command:`enable_language` commands. When ``OBJC`` or ``OBJCXX``
is enabled, source files with the ``.m`` or ``.mm``, respectively,
will be compiled as Objective C or C++. Otherwise they will be treated
as plain C++ sources as they were before.

View File

@@ -1,9 +0,0 @@
per-lang-link-library-flag
--------------------------
* New variables :variable:`CMAKE_<LANG>_LINK_LIBRARY_FLAG`,
:variable:`CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG`, and
:variable:`CMAKE_<LANG>_LINK_LIBRARY_SUFFIX` allow control of the
flag used to specify linking to a library on a per-language basis.
This is useful for mixed-language projects where the different
drivers may use different flags.

View File

@@ -1,6 +0,0 @@
Precompile Headers
------------------
* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to tell
generators to use a list of precompile headers for faster compilation
times.

View File

@@ -1,5 +0,0 @@
project-version-0
-----------------
* The :command:`project` no longer strips leading zeros in version components.
See policy :policy:`CMP0096`.

View File

@@ -1,6 +0,0 @@
remove_directory-symlink
------------------------
* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool,
when given the path to a symlink to a directory, now removes just
the symlink. It no longer removes content of the linked directory.

View File

@@ -1,4 +0,0 @@
solaris_clang
-------------
* The ``Clang`` compiler is now supported on ``Solaris``.

View File

@@ -1,6 +0,0 @@
trace-redirect
--------------
* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line option
that can be used to redirect ``--trace`` output to a file instead
of ``stderr``.

View File

@@ -1,6 +0,0 @@
Unity build
-----------
* The :prop_tgt:`UNITY_BUILD` target property was added to tell
generators to batch include source files for faster compilation
times.

View File

@@ -1,5 +0,0 @@
vs-configuration-type-genex
---------------------------
* :prop_tgt:`VS_CONFIGURATION_TYPE` now supports
:manual:`generator expressions <cmake-generator-expressions(7)>`.

View File

@@ -1,6 +0,0 @@
vs-dpi-aware
------------
* The :prop_tgt:`VS_DPI_AWARE` target property was added to tell
:ref:`Visual Studio Generators` to set the ``EnableDpiAwareness``
property in ``.vcxproj`` files.

View File

@@ -1,6 +0,0 @@
windows-auto-export-incremental-build
-------------------------------------
* On Windows, existing auto generated exports are now only updated if the
modified time stamp of the exports is not newer than any modified time stamp
of the input files.

View File

@@ -1,7 +0,0 @@
xcode-debug-document-versioning
-------------------------------
* The Xcode generator learnt to set the value of the
``Allow debugging when using document Versions Browser`` schema
option with the :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
target property.

View File

@@ -15,6 +15,7 @@ Releases
.. toctree::
:maxdepth: 1
3.16 <3.16>
3.15 <3.15>
3.14 <3.14>
3.13 <3.13>