Просмотр исходного кода

Help: Organize and revise 3.16 release notes

Add section headers similar to the 3.15 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.
Drop bullets covering internal interfaces.
Brad King 6 лет назад
Родитель
Сommit
a933d8d84e
1 измененных файлов с 178 добавлено и 135 удалено
  1. 178 135
      Help/release/3.16.rst

+ 178 - 135
Help/release/3.16.rst

@@ -7,30 +7,26 @@ CMake 3.16 Release Notes
 
 Changes made since CMake 3.15 include the following.
 
-* The :command:`find_package` command has learned to check the following
-  variables to control searching
+New Features
+============
 
-  * :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the
-    cmake user registry.
+Languages
+---------
 
-* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` has been deprecated.
-  Instead use :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
+* 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.
 
-* 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`.
+Compilers
+---------
 
-* 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 ``Clang`` compiler is now supported on ``Solaris``.
 
-* 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.
+Platforms
+---------
 
 * On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
   now produce a linker import file with a ``.imp`` extension in addition
@@ -50,97 +46,27 @@ Changes made since CMake 3.15 include the following.
   ``-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`.
+Command-Line
+------------
 
-* CPack learned :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` to control
-  what configurations going to be packaged for multi-configuration generators.
+* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands,
+  which do nothing while returning exit codes of 0 and 1, respectively.
 
-* 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.
+* :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``.
 
-* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  gain the capability to specify directly artifacts.
+Commands
+--------
 
-* Modules :module:`FindPackageHandleStandardArgs` gains the capability to
-  specify a message giving the reason for the failure.
+* The :command:`add_test` command learned the option ``COMMAND_EXPAND_LISTS``
+  which causes lists in the ``COMMAND`` argument to be expanded, including
+  lists created by generator expressions.
 
 * 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
@@ -161,59 +87,176 @@ Changes made since CMake 3.15 include the following.
   * :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:`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 :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.
+* The :command:`target_precompile_headers` command was added to specify
+  a list of headers to precompile for faster compilation times.
 
-* 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.
+Variables
+---------
 
-* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to tell
-  generators to use a list of precompile headers for faster compilation
-  times.
+* The :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` variable has been
+  introduced to optionally initialize the
+  :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.
 
-* The :command:`project` no longer strips leading zeros in version components.
-  See policy :policy:`CMP0096`.
+* The :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` variable was added to
+  specify the resource encoding for the the :generator:`Eclipse CDT4` extra
+  generator.
 
-* 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.
+Properties
+----------
 
-* The ``Clang`` compiler is now supported on ``Solaris``.
+* The :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` target properties
+  now support :manual:`generator expressions <cmake-generator-expressions(7)>`.
 
-* :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:`INSTALL_REMOVE_ENVIRONMENT_RPATH` target property was
+  added to remove compiler-defined ``RPATH`` entries from a target.
+  This property is initialized by the
+  :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` variable.
+
+* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to specify
+  a list of headers to precompile for faster compilation times.
+  Set it using the :command:`target_precompile_headers` command.
 
 * 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
+* The :prop_tgt:`VS_CONFIGURATION_TYPE` target property 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 :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` target property was
+  added to tell the :generator:`Xcode` generator to set the value of the
+  ``Allow debugging when using document Versions Browser`` schema option.
+
+Modules
+-------
+
+* The :module:`FindDoxygen` module :command:`doxygen_add_docs` command
+  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 :module:`FindGnuTLS` module now provides an imported target.
+
+* The :module:`FindPackageHandleStandardArgs` module
+  :command:`find_package_handle_standard_args` command gained
+  a new ``REASON_FAILURE_MESSAGE`` option to specify a message
+  giving the reason for the failure.
+
+* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
+  now defines a ``<prefix>_MODULE_NAME`` result variable containing the
+  first matching module name.
+
+* The :module:`FindPython3` and :module:`FindPython` modules gained
+  options to control which ``ABIs`` will be searched.
+
+* The :module:`FindPython3`, :module:`FindPython2`, and :module:`FindPython`
+  modules now support direct specification of artifacts via cache entries.
+
+Autogen
+-------
+
+* 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.
+
+CTest
+-----
+
+* :manual:`ctest(1)` now has the ability to serialize tests based on hardware
+  requirements for each test. See :ref:`ctest-hardware-allocation` for
+  details.
+
+* 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`.
+
+CPack
+-----
+
+* CPack variable :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` was added to
+  control what configurations are to be packaged for multi-configuration
+  CMake generators.
+
+* The :cpack_gen:`CPack Archive Generator` learned to generate ``.tar.zst``
+  packages with Zstandard compression.
+
+Deprecated and Removed Features
+===============================
+
+* 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 :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable has been
+  deprecated.  Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable
+  instead.
+
+* The :module:`GetPrerequisites` module has been deprecated, as it has been
+  superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.
+
+* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
+  new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.
+
+Other Changes
+=============
+
+* 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 :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 :manual:`ctest(1)`  ``--build-makeprogram`` command-line option now
+  specifies the make program used when configuring a project with the
+  :generator:`Ninja` generator or the :ref:`Makefile Generators`.
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
+  has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules.
+  See policy :policy:`CMP0097`.
+
+* The :module:`FindGTest` module has been updated to recognize
+  MSVC build trees generated by GTest 1.8.1.
+
+* The :command:`project` command no longer strips leading zeros in version
+  components.  See policy :policy:`CMP0096`.
+
+* 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 generated CMake scripts
+  used for installation.  See policy :policy:`CMP0095`.
 
-* 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.
+* When using :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` on Windows the
+  auto-generated exports are now updated only when the object files
+  providing the symbols are updated.