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.
This commit is contained in:
Brad King 2019-06-04 09:55:17 -04:00
parent 01d5730411
commit 4272297b6e

View File

@ -7,77 +7,285 @@ 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.
* AppleClang compiler have learned how to compile C++20.
* It is now available on Linux.
* Support for the Clang-based ARM compiler was added with compiler id ``ARMClang``.
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.
* The :prop_tgt:`Swift_MODULE_NAME` target property was added to
customize the Swift module name.
* 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.
* Support for the Clang-based ARM compiler was added with compiler id
``ARMClang``.
* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support for
multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
* Support was added for the IAR compiler architectures Renesas RX,
RL78, RH850 and Texas Instruments MSP430.
* 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 compilers built for Linux (IAR BuildLx).
* 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).
Command-Line
------------
* 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``)
* 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 :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 :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 :variable:`CMAKE_FRAMEWORK` variable was added to
initialize the :prop_tgt:`FRAMEWORK` property on all
targets.
* 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 :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 :cpack_gen:`CPack IFW Generator` gained a new
:variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
installer stylesheet.
* The :command:`file(INSTALL)` command learned a new argument,
``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
install symlinks.
* :command:`list` learned new sub-commands:
``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
* The :command:`message` command learned new types:
``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``.
* The :command:`string` learned a new sub-command ``REPEAT``.
Variables
---------
* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
:prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
arguments to the emulator.
* 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 :variable:`CMAKE_FRAMEWORK` variable was added to initialize the
:prop_tgt:`FRAMEWORK` property on all targets.
* 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 :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.
* A new imported target ``Boost::headers`` is now defined (same
as ``Boost::boost``).
* New output variables ``Boost_VERSION_MACRO``,
``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``,
``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT``
were added.
* The ``QUIET`` argument passed to :command:`find_package` is no
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.
* ``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.
* 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`
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``
and ``Python3::Module``) which can be used to develop Python modules.
* 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.
* 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 ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
:manual:`generator expression <cmake-generator-expressions(7)>`
has been added.
* A ``$<REMOVE_DUPLICATES:list>``
:manual:`generator expression <cmake-generator-expressions(7)>`
has been added.
* The ``$<SHELL_PATH:...>`` :manual:`generator expression
<cmake-generator-expressions(7)>` gained support for a list of paths.
* 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:
* ``$<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 ``$<TARGET_OBJECTS:...>`` :manual:`generator expression
<cmake-generator-expressions(7)>` is now supported on ``SHARED``,
``STATIC``, ``MODULE`` libraries and executables.
CTest
-----
* 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
@ -88,15 +296,32 @@ Changes made since CMake 3.14 include the following.
the current version of your source tree rather than using the update
command to discover the current version that is checked out.
* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
:manual:`generator expressions <cmake-generator-expressions(7)>` were added.
CPack
-----
* 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 :cpack_gen:`CPack IFW Generator` gained a new
:variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
installer stylesheet.
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 :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now
deprecated. Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property
instead.
* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
deprecated. Support still exists but will be removed in future versions.
* The :command:`export(PACKAGE)` command now does nothing unless
enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
See policy :policy:`CMP0090`.
* The :generator:`Xcode` generator now requires at least Xcode 5.
* An explicit deprecation diagnostic was added for policy ``CMP0066``
(``CMP0065`` and below were already deprecated).
@ -104,222 +329,19 @@ Changes made since CMake 3.14 include the following.
of all policies are deprecated and that projects should port to the
NEW behaviors.
* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
:prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
arguments to the emulator.
Other Changes
=============
* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
environment modules in :ref:`CTest Scripts <CTest Script>`.
* The :command:`export(PACKAGE)` command now does nothing unless
enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
See policy :policy:`CMP0090`.
* The :command:`file(INSTALL)` command learned a new argument,
``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
install symlinks.
* 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 :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``).
* New output variables ``Boost_VERSION_MACRO``,
``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``,
``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.
* 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:`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:`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.
* Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
gain a new target (respectively ``Python::Module``, ``Python2::Module``
and ``Python3::Module``) which can be used to develop Python modules.
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
gain capability to control how virtual environments are handled.
* 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
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>``
: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`.
* 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.
* 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 :command:`message` command learned new types: ``NOTICE``, ``VERBOSE``,
``DEBUG`` and ``TRACE``.
* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`.
* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
* 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.
* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
property of imported targets with other (non-library) linker flags.
* A variable :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` was added to allow
injection of custom code before the :command:`project` call.
* 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 ``TARGET_OBJECTS`` :manual:`generator expression <cmake-generator-expressions(7)>`
is now supported on ``SHARED``, ``STATIC``, ``MODULE`` libraries and executables.
* The :manual:`cmake(1)` ``-E remove_directory`` command learned to support
removing multiple directories.
* A new ``$<REMOVE_DUPLICATES:list>``
:manual:`generator expression <cmake-generator-expressions(7)>`
has been added.
* The :generator:`Xcode` generator now requires at least Xcode 5.
* 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.
* 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`.
* A source property :prop_sf:`Swift_DIAGNOSTICS_FILE` was added to sources to
indicate where to write the serialised Swift diagnostics.
* 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.
* A :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
tell :ref:`Visual Studio Generators` to add references to nuget
packages.
* 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`.
* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added which allows
to import external .props files in managed Visual Studio targets.
* 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.
* 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 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.