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. Changes made since CMake 3.14 include the following.
* The :command:`execute_process` command gained a `COMMAND_ECHO` option New Features
and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable ============
to enable echoing of the command-line string before execution.
* New target property :prop_tgt:`ADDITIONAL_CLEAN_FILES` and directory property Generators
:prop_dir:`ADDITIONAL_CLEAN_FILES` were added. They allow to register ----------
additional files that should be removed during the clean stage.
* Directory property :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` was marked * The :generator:`Xcode` generator now supports per-target schemes.
deprecated. The new directory property :prop_dir:`ADDITIONAL_CLEAN_FILES` See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
should be used instead. :prop_tgt:`XCODE_GENERATE_SCHEME` target property.
* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the * The :generator:`Green Hills MULTI` generator has been updated:
compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`.
* :command:`add_library` command ``ALIAS`` option learned to support * It now supports the :command:`add_custom_command` and
import libraries of the ``UNKNOWN`` type. :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 * The ``Clang`` compiler variant on Windows that targets the MSVC ABI
but has a GNU-like command line is now supported. but has a GNU-like command line is now supported.
* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered * Support for the Clang-based ARM compiler was added with compiler id
deprecated. Support still exists but will be removed in future versions. ``ARMClang``.
* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support for * Support was added for the IAR compiler architectures Renesas RX,
multiple targets, e.g. ``cmake --build . --target Library1 Library2``. RL78, RH850 and Texas Instruments MSP430.
* The :manual:`cmake(1)` ``-E tar`` tool now continues adding files to an * Support was added for the IAR compilers built for Linux (IAR BuildLx).
archive, even if some of the files aren't readable. This behavior is more
consistent with the classic ``tar`` tool.
* The :manual:`cmake(1)` ``-E tar`` tool now parses all flags, and if an Command-Line
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).
* The :manual:`cmake(1)` ``-E tar`` tool allow for extract (``-x``) or list * The :envvar:`CMAKE_GENERATOR` environment variable was added
(``-t``) only specific files or directories. To select pathnames append to specify a default generator to use when :manual:`cmake(1)` is
a space-separated list of file names or directories. run without a ``-G`` option. Additionally, environment variables
When extracting selected files or directories, you must provide their exact :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
pathname, as printed by list (``-t``) and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
the generator.
* The :manual:`cmake(1)` ``-E tar`` tool now support Zstandard compression * The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support
algorithm with ``--zstd`` option. Zstandard was designed to give for multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
a compression ratio comparable to that of the DEFLATE (zip) algorithm, It now also has a short form ``-t`` alias, e.g.
but faster, especially for decompression. ``cmake --build . -t Library1 Library2``.
* A :variable:`CMAKE_FRAMEWORK` variable was added to * The :manual:`cmake(1)` command gained a new ``--install`` option.
initialize the :prop_tgt:`FRAMEWORK` property on all
targets.
* A new ``--install`` option was added to :manual:`cmake(1)`.
This may be used after building a project to run installation without This may be used after building a project to run installation without
using the generated build system or the native build tool. 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 * The :command:`cmake_parse_arguments` command gained an additional
``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report
keyword arguments that were given by the caller with no values. keyword arguments that were given by the caller with no values.
* The :manual:`cmake(1)` ``--target`` parameter gained shorter * The :command:`execute_process` command gained a ``COMMAND_ECHO`` option
version ``-t``, e.g. ``cmake --build . -t Library1 Library2`` is and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
equivalant to ``cmake --build . --target Library1 Library2``. to enable echoing of the command-line string before execution.
* The :cpack_gen:`CPack IFW Generator` gained a new * The :command:`file(INSTALL)` command learned a new argument,
:variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
installer stylesheet. 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``. * 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 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 the current version of your source tree rather than using the update
command to discover the current version that is checked out. command to discover the current version that is checked out.
* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>`` CPack
:manual:`generator expressions <cmake-generator-expressions(7)>` were added. -----
* The :envvar:`CMAKE_GENERATOR` environment variable was added * The :cpack_gen:`CPack IFW Generator` gained a new
to specify a default generator to use when :manual:`cmake(1)` is :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
run without a ``-G`` option. Additionally, environment variables installer stylesheet.
:envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure Deprecated and Removed Features
the generator. ===============================
* 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`` * An explicit deprecation diagnostic was added for policy ``CMP0066``
(``CMP0065`` and below were already deprecated). (``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 of all policies are deprecated and that projects should port to the
NEW behaviors. NEW behaviors.
* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding Other Changes
: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 * CMake learned how to compile C++14 with the IBM AIX XL compiler
environment modules in :ref:`CTest Scripts <CTest Script>`. and the SunPro compiler and to compile C++20 with the AppleClang compiler.
* 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`.
* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS` * With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
no longer contains warning flags like ``/W3`` by default. no longer contains warning flags like ``/W3`` by default.
See policy :policy:`CMP0092`. See policy :policy:`CMP0092`.
* The :command:`message` command learned new types: ``NOTICE``, ``VERBOSE``, * IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
``DEBUG`` and ``TRACE``. compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`.
* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``. * The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
were changed to ignore empty arguments with a warning instead of treating
* The commands :command:`add_custom_command` and :command:`add_custom_target` them as a relative path and removing the contents of the current directory.
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.