Browse Source

Help: Organize and revise 3.15 release notes

Add section headers similar to the 3.14 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.
Brad King 6 years ago
parent
commit
4272297b6e
1 changed files with 231 additions and 209 deletions
  1. 231 209
      Help/release/3.15.rst

+ 231 - 209
Help/release/3.15.rst

@@ -7,125 +7,190 @@ CMake 3.15 Release Notes
 
 Changes made since CMake 3.14 include the following.
 
-* The :command:`execute_process` command gained a `COMMAND_ECHO` option
-  and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
-  to enable echoing of the command-line string before execution.
+New Features
+============
 
-* New target property :prop_tgt:`ADDITIONAL_CLEAN_FILES` and directory property
-  :prop_dir:`ADDITIONAL_CLEAN_FILES` were added.  They allow to register
-  additional files that should be removed during the clean stage.
+Generators
+----------
 
-* Directory property :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` was marked
-  deprecated.  The new directory property :prop_dir:`ADDITIONAL_CLEAN_FILES`
-  should be used instead.
+* The :generator:`Xcode` generator now supports per-target schemes.
+  See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
+  :prop_tgt:`XCODE_GENERATE_SCHEME` target property.
 
-* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
-  compiler id ``XLClang`` instead of ``XL``.  See policy :policy:`CMP0089`.
+* The :generator:`Green Hills MULTI` generator has been updated:
 
-* :command:`add_library` command ``ALIAS`` option learned to support
-  import libraries of the ``UNKNOWN`` type.
+  * It now supports the :command:`add_custom_command` and
+    :command:`add_custom_target` commands.
+
+  * It is now available on Linux.
+
+Languages
+---------
+
+* Preliminary support for the ``Swift`` language was added to the
+  :generator:`Ninja` generator:
+
+  * Use the :envvar:`SWIFTC` environment variable to specify a compiler.
+
+  * The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and
+    :prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added
+    to customize dependency files.
 
-* AppleClang compiler have learned how to compile C++20.
+  * The :prop_tgt:`Swift_MODULE_NAME` target property was added to
+    customize the Swift module name.
 
-* Support for the Clang-based ARM compiler was added with compiler id ``ARMClang``.
+  * The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to
+    indicate where to write the serialised Swift diagnostics.
+
+  The Swift support is experimental, not considered stable, and may change
+  in future releases of CMake.
+
+Compilers
+---------
 
 * The ``Clang`` compiler variant on Windows that targets the MSVC ABI
   but has a GNU-like command line is now supported.
 
-* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
-  deprecated.  Support still exists but will be removed in future versions.
-
-* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support for
-  multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
+* Support for the Clang-based ARM compiler was added with compiler id
+  ``ARMClang``.
 
-* The :manual:`cmake(1)` ``-E tar`` tool now continues adding files to an
-  archive, even if some of the files aren't readable. This behavior is more
-  consistent with the classic ``tar`` tool.
+* Support was added for the IAR compiler architectures Renesas RX,
+  RL78, RH850 and Texas Instruments MSP430.
 
-* The :manual:`cmake(1)` ``-E tar`` tool now parses all flags, and if an
-  invalid flag was provided, a warning is issued.
-* The :manual:`cmake(1)` ``-E tar`` tool now displays an error if no action
-  flag was specified, along with a list of possible actions: ``t`` (list),
-  ``c`` (create) or ``x`` (extract).
+* Support was added for the IAR compilers built for Linux (IAR BuildLx).
 
-* The :manual:`cmake(1)` ``-E tar`` tool allow for extract (``-x``) or list
-  (``-t``) only specific files or directories.  To select pathnames append
-  a space-separated list of file names or directories.
-  When extracting selected files or directories, you must provide their exact
-  pathname, as printed by list (``-t``)
+Command-Line
+------------
 
-* The :manual:`cmake(1)` ``-E tar`` tool now support Zstandard compression
-  algorithm with ``--zstd`` option. Zstandard was designed to give
-  a compression ratio comparable to that of the DEFLATE (zip) algorithm,
-  but faster, especially for decompression.
+* The :envvar:`CMAKE_GENERATOR` environment variable was added
+  to specify a default generator to use when :manual:`cmake(1)` is
+  run without a ``-G`` option.  Additionally, environment variables
+  :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
+  and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
+  the generator.
 
-* A :variable:`CMAKE_FRAMEWORK` variable was added to
-  initialize the :prop_tgt:`FRAMEWORK` property on all
-  targets.
+* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support
+  for multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
+  It now also has a short form ``-t`` alias, e.g.
+  ``cmake --build . -t Library1 Library2``.
 
-* A new ``--install`` option was added to :manual:`cmake(1)`.
+* The :manual:`cmake(1)` command gained a new ``--install`` option.
   This may be used after building a project to run installation without
   using the generated build system or the native build tool.
 
+* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
+
+* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned
+  to support removing multiple directories.
+
+* The :manual:`cmake(1)` ``-E tar`` tool has been improved:
+
+  * It now continues adding files to an archive even if some of the files
+    are not readable.  This behavior is more consistent with the
+    classic ``tar`` tool.
+
+  * It now parses all flags, and if an invalid flag was provided, a
+    warning is issued.
+
+  * It now displays an error if no action flag was specified, along with a
+    list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract).
+
+  * It now supports extracting (``-x``) or listing (``-t``) only specific
+    files or directories.
+
+  * It now supports Zstandard compression with a ``--zstd`` option.
+    Zstandard was designed to give a compression ratio comparable to that
+    of the DEFLATE (zip) algorithm, but faster, especially for decompression.
+
+Commands
+--------
+
+* The :command:`add_custom_command` and :command:`add_custom_target` commands
+  gained a new ``JOB_POOL`` option that works with the :generator:`Ninja`
+  generator to set the pool variable on the build statement.
+
+* The :command:`add_library` command ``ALIAS`` option learned to support
+  import libraries of the ``UNKNOWN`` type.
+
 * The :command:`cmake_parse_arguments` command gained an additional
   ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report
   keyword arguments that were given by the caller with no values.
 
-* The :manual:`cmake(1)` ``--target`` parameter gained shorter
-  version ``-t``, e.g. ``cmake --build . -t Library1 Library2`` is
-  equivalant to ``cmake --build . --target Library1 Library2``.
-
-* The :cpack_gen:`CPack IFW Generator` gained a new
-  :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
-  installer stylesheet.
+* The :command:`execute_process` command gained a ``COMMAND_ECHO`` option
+  and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
+  to enable echoing of the command-line string before execution.
 
-* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``.
-  This can be used to store the ID assigned to this build by CDash to a
-  variable.
+* The :command:`file(INSTALL)` command learned a new argument,
+  ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
+  install symlinks.
 
-* The :command:`ctest_update` command learned to honor a new variable:
-  :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify
-  the current version of your source tree rather than using the update
-  command to discover the current version that is checked out.
+* :command:`list` learned new sub-commands:
+  ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
 
-* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
+* The :command:`message` command learned new types:
+  ``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``.
 
-* The :envvar:`CMAKE_GENERATOR` environment variable was added
-  to specify a default generator to use when :manual:`cmake(1)` is
-  run without a ``-G`` option.  Additionally, environment variables
-  :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
-  and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
-  the generator.
+* The :command:`string` learned a new sub-command ``REPEAT``.
 
-* An explicit deprecation diagnostic was added for policy ``CMP0066``
-  (``CMP0065`` 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.
+Variables
+---------
 
 * The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
   :prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
   arguments to the emulator.
 
-* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
-  environment modules in :ref:`CTest Scripts <CTest Script>`.
+* The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell
+  :command:`find_package` calls to look for a package configuration
+  file first even if a find module is available.
 
-* The :command:`export(PACKAGE)` command now does nothing unless
-  enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
-  See policy :policy:`CMP0090`.
+* The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the
+  :prop_tgt:`FRAMEWORK` property on all targets.
 
-* The :command:`file(INSTALL)` command learned a new argument,
-  ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
-  install symlinks.
+* The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and
+  :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to
+  enable the Just My Code feature of the Visual Studio Debugger when
+  compiling with MSVC cl 19.05 and higher.
 
-* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
-  were changed to ignore empty arguments with a warning instead of treating
-  them as a relative path and removing the contents of the current directory.
+* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and
+  :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to
+  select the runtime library used by compilers targeting the MSVC ABI.
+  See policy :policy:`CMP0091`.
+
+* The :variable:`CMAKE_PROJECT_INCLUDE` and
+  :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow
+  injection of custom code at the sites of :command:`project` calls
+  without knowing the project name a priori.
+
+Properties
+----------
+
+* The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and
+  :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added.
+  They allow to register additional files that should be removed during
+  the clean stage.
+
+* The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties
+  may now be set on :ref:`Interface Libraries`. The headers specified by those
+  properties can be installed using the :command:`install(TARGETS)` command by
+  passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively.
+
+* The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
+  tell :ref:`Visual Studio Generators` to add references to ``nuget``
+  packages.
+
+* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow
+  managed Visual Studio project files to import external ``.props`` files.
+
+* The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to
+  tell :ref:`Visual Studio Generators` whether to deploy an artifact
+  to the WinCE or Windows Phone target device.
+
+Modules
+-------
 
-* The :module:`FindBoost` module was reworked to expose a more
-  consistent user experience between its config and module modes
-  and with other find modules in general.
+* The :module:`FindBoost` module was reworked to expose a more consistent
+  user experience between its "Config" and "Module" modes and with other
+  find modules in general.
 
   * A new imported target ``Boost::headers`` is now defined (same
     as ``Boost::boost``).
@@ -135,46 +200,33 @@ Changes made since CMake 3.14 include the following.
     ``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT``
     were added.
 
-  * The internal logic for determining the value for
-    ``Boost_FOUND``, for version and component checks, and
-    for reporting the result to the user was replaced with
-    the :module:`FindPackageHandleStandardArgs` module. (This
-    fixed a bug that sometimes printed wrong status
-    messages in config mode.)
-
   * The ``QUIET`` argument passed to :command:`find_package` is no
-    longer ignored in config mode.
-
-  * *Known issue*: The CMake package shipped with Boost ``1.70.0``
-    ignores the ``QUIET`` argument passed to :command:`find_package`.
-    This is fixed in the next Boost release.
+    longer ignored in config mode.  Note that the CMake package shipped with
+    Boost ``1.70.0`` ignores the ``QUIET`` argument passed to
+    :command:`find_package`.  This is fixed in the next Boost release.
 
-  * The input switch ``Boost_DETAILED_FAILURE_MSG`` was
-    removed.
+  * The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed.
 
   * ``Boost_VERSION`` now reports the version in ``x.y.z``
     format in module mode.  See policy :policy:`CMP0093`.
 
 * The :module:`FindCups` module now provides imported targets.
 
+* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
+  environment modules in :ref:`CTest Scripts <CTest Script>`.
+
 * The :module:`FindGLEW` module now provides an interface more consistent
   with what upstream GLEW provides in its own CMake package files.
 
-* Variable :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` was added to tell
-  :command:`find_package` calls to look for a package configuration
-  file first even if a find module is available.
+* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
+  property of imported targets with other (non-library) linker flags.
 
 * The :module:`FindPostgreSQL` module learned to find debug and release
   variants separately.
 
 * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  have changed default strategy for lookup. See policy :policy:`CMP0094`.
-
-* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  gain a new variable to control frameworks lookup on macOS.
-
-* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  gain a new way to control lookup strategy.
+  gained additional lookup strategies and controls, and a new default.
+  See policy :policy:`CMP0094`.
 
 * Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
   gain a new target (respectively ``Python::Module``, ``Python2::Module``
@@ -183,143 +235,113 @@ Changes made since CMake 3.14 include the following.
 * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
   gain capability to control how virtual environments are handled.
 
+* The :module:`UseSWIG` module learned to manage alternate library names
+  by passing ``-interface <library_name>`` for ``python`` language or
+  ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG``
+  compiler.
+
+Generator Expressions
+---------------------
+
 * The :manual:`generator expressions <cmake-generator-expressions(7)>`
   ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``,
   ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and
   ``PLATFORM_ID`` learned to support matching one value from a comma-separated
   list.
 
-* A new ``COMPILE_LANG_AND_ID`` generator expression was introduced to
+* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
+  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
+
+* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to
   allow specification of compile options for target files based on the
   :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of
   each source file.
 
-* A new ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
+* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
   :manual:`generator expression <cmake-generator-expressions(7)>`
   has been added.
 
-* New ``$<TARGET_FILE_BASE_NAME:...>``, ``$<TARGET_LINKER_FILE_BASE_NAME:...>``
-  and ``$<TARGET_PDB_FILE_BASE_NAME:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` have been
-  added to retrieve the base name of various artifacts.
-
-* New ``$<TARGET_FILE_PREFIX:...>``, ``$<TARGET_LINKER_FILE_PREFIX:...>``,
-  ``$<TARGET_FILE_SUFFIX:...>`` and ``$<TARGET_LINKER_FILE_SUFFIX:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` have been
-  added to retrieve the prefix and suffix of various artifacts.
-
-* The :generator:`Green Hills MULTI` generator now supports
-  :command:`add_custom_command` and :command:`add_custom_target`
-
-* The :generator:`Green Hills MULTI` generator is now available on Linux.
-
-* Support was added for the IAR compiler architectures Renesas RX,
-  RL78, RH850 and Texas Instruments MSP430.
-* The IAR compilers built for Linux (IAR BuildLx) now work as well.
-
-* ``INTERFACE`` library can now have :prop_tgt:`PUBLIC_HEADER` and
-  :prop_tgt:`PRIVATE_HEADER` properties set. The headers specified by those
-  properties can be installed using the :command:`install(TARGETS)` command by
-  passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively.
-
-* :command:`list` learned new sub-commands ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
-
-* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and
-  :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to
-  select the runtime library used by compilers targeting the MSVC ABI.
-  See policy :policy:`CMP0091`.
-
-* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
-  no longer contains warning flags like ``/W3`` by default.
-  See policy :policy:`CMP0092`.
+* A ``$<REMOVE_DUPLICATES:list>``
+  :manual:`generator expression <cmake-generator-expressions(7)>`
+  has been added.
 
-* The :command:`message` command learned new types: ``NOTICE``, ``VERBOSE``,
-  ``DEBUG`` and ``TRACE``.
+* The ``$<SHELL_PATH:...>`` :manual:`generator expression
+  <cmake-generator-expressions(7)>` gained support for a list of paths.
 
-* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
+* New ``$<TARGET_FILE*>`` :manual:`generator expressions
+  <cmake-generator-expressions(7)>` were added to retrieve the prefix, base
+  name, and suffix of the file names of various artifacts:
 
-* The commands :command:`add_custom_command` and :command:`add_custom_target`
-  gained a new ``JOB_POOL`` option that works with the :generator:`Ninja`
-  generator to set the pool variable on the build statement.
+  * ``$<TARGET_FILE_PREFIX:...>``
+  * ``$<TARGET_FILE_BASE_NAME:...>``
+  * ``$<TARGET_FILE_SUFFIX:...>``
+  * ``$<TARGET_LINKER_FILE_PREFIX:...>``
+  * ``$<TARGET_LINKER_FILE_BASE_NAME:...>``
+  * ``$<TARGET_LINKER_FILE_SUFFIX:...>``
+  * ``$<TARGET_PDB_FILE_BASE_NAME:...>``
 
-* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
-  property of imported targets with other (non-library) linker flags.
+* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression
+  <cmake-generator-expressions(7)>` is now supported on ``SHARED``,
+  ``STATIC``, ``MODULE`` libraries and executables.
 
-* A variable :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` was added to allow
-  injection of custom code before the :command:`project` call.
+CTest
+-----
 
-* A variable :variable:`CMAKE_PROJECT_INCLUDE` was added to allow injection
-  of custom code into the project without knowing the project name a priori.
+* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``.
+  This can be used to store the ID assigned to this build by CDash to a
+  variable.
 
-* The ``TARGET_OBJECTS`` :manual:`generator expression <cmake-generator-expressions(7)>`
-  is now supported on ``SHARED``, ``STATIC``, ``MODULE`` libraries and executables.
+* The :command:`ctest_update` command learned to honor a new variable:
+  :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify
+  the current version of your source tree rather than using the update
+  command to discover the current version that is checked out.
 
-* The :manual:`cmake(1)` ``-E remove_directory`` command learned to support
-  removing multiple directories.
+CPack
+-----
 
-* A new ``$<REMOVE_DUPLICATES:list>``
-  :manual:`generator expression <cmake-generator-expressions(7)>`
-  has been added.
+* The :cpack_gen:`CPack IFW Generator` gained a new
+  :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
+  installer stylesheet.
 
-* The :generator:`Xcode` generator now requires at least Xcode 5.
+Deprecated and Removed Features
+===============================
 
 * The :manual:`cmake-server(7)` mode has been deprecated and will be
   removed from a future version of CMake.  Please port clients to use
   the :manual:`cmake-file-api(7)` instead.
 
-* The ``$<SHELL_PATH:...>`` :manual:`generator expression
-  <cmake-generator-expressions(7)>` gained support for a list of paths.
-
-* The :command:`string` learned a new sub-command ``REPEAT``.
-
-* SunPro compiler have learned how to compile C++14.
-
-* Preliminary support for the Swift language with the :generator:`Ninja`
-  generator was added.  Use the :envvar:`SWIFTC` environment variable to
-  specify a compiler.
+* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now
+  deprecated.  Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property
+  instead.
 
-* Support to emit an output file map was added to enable Swift compilation.
-
-* A target property :prop_tgt:`Swift_DEPENDENCIES_FILE` was added to targets to
-  indicate where to save the target swift dependencies file.  If one is not
-  specified, it will default to `<TARGET>.swiftdeps`.
-
-* A target property :prop_tgt:`Swift_MODULE_NAME` was added to targets to
-  indicate the Swift module name.  If it is not specified, it will default to
-  the name of the target.
-
-* A source property :prop_sf:`Swift_DEPENDENCIES_FILE` was added to sources to
-  indicate where to save the target swift dependencies file.  If one is not
-  specified, it will default to `<OBJECT>.swiftdeps`.
+* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
+  deprecated.  Support still exists but will be removed in future versions.
 
-* A source property :prop_sf:`Swift_DIAGNOSTICS_FILE` was added to sources to
-  indicate where to write the serialised Swift diagnostics.
+* The :command:`export(PACKAGE)` command now does nothing unless
+  enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
+  See policy :policy:`CMP0090`.
 
-* The :module:`UseSWIG` module learned to manage alternate library names by
-  passing ``-interface <library_name>`` for ``python`` language or
-  ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG``
-  compiler.
+* The :generator:`Xcode` generator now requires at least Xcode 5.
 
-* A :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
-  tell :ref:`Visual Studio Generators` to add references to nuget
-  packages.
+* An explicit deprecation diagnostic was added for policy ``CMP0066``
+  (``CMP0065`` 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.
 
-* For the :ref:`Visual Studio Generators`,
-  :ref:`Makefile Generators`, and the :generator:`Ninja` generators
-  the Just My Code feature of the Visual Studio Debugger can be
-  leveraged by turning on the :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target
-  property. Its default value is provided by the variable
-  :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING`.
+Other Changes
+=============
 
-* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added which allows
-  to import external .props files in managed Visual Studio targets.
+* CMake learned how to compile C++14 with the IBM AIX XL compiler
+  and the SunPro compiler and to compile C++20 with the AppleClang compiler.
 
-* A :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to
-  tell :ref:`Visual Studio Generators` whether to deploy an artifact
-  to the WinCE or Windows Phone target device.
+* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
+  no longer contains warning flags like ``/W3`` by default.
+  See policy :policy:`CMP0092`.
 
-* The :generator:`Xcode` generator now supports per-target schemes.
-  See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
-  :prop_tgt:`XCODE_GENERATE_SCHEME` target property.
+* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
+  compiler id ``XLClang`` instead of ``XL``.  See policy :policy:`CMP0089`.
 
-* IBM AIX XL compiler have learned how to compile C++14.
+* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
+  were changed to ignore empty arguments with a warning instead of treating
+  them as a relative path and removing the contents of the current directory.