summaryrefslogtreecommitdiffstats
path: root/Help/release/3.15.rst
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-06-04 12:50:40 (GMT)
committerBrad King <brad.king@kitware.com>2019-06-04 13:55:37 (GMT)
commit01d5730411561b7278d0350dffb8b7dd89ac8970 (patch)
treefbb41becef64ce523828ce2f7eb7237b2449f208 /Help/release/3.15.rst
parente075e64fd80c3b63492232c7f9019ce65d1d8e4a (diff)
downloadCMake-01d5730411561b7278d0350dffb8b7dd89ac8970.zip
CMake-01d5730411561b7278d0350dffb8b7dd89ac8970.tar.gz
CMake-01d5730411561b7278d0350dffb8b7dd89ac8970.tar.bz2
Help: Consolidate 3.15 release notes
Run the `Utilities/Release/consolidate-relnotes.bash` script to move notes from `Help/release/dev/*` into `Help/release/3.15.rst`.
Diffstat (limited to 'Help/release/3.15.rst')
-rw-r--r--Help/release/3.15.rst325
1 files changed, 325 insertions, 0 deletions
diff --git a/Help/release/3.15.rst b/Help/release/3.15.rst
new file mode 100644
index 0000000..5366ec7
--- /dev/null
+++ b/Help/release/3.15.rst
@@ -0,0 +1,325 @@
+CMake 3.15 Release Notes
+************************
+
+.. only:: html
+
+ .. contents::
+
+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 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.
+
+* Directory property :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` was marked
+ deprecated. The new directory property :prop_dir:`ADDITIONAL_CLEAN_FILES`
+ should be used instead.
+
+* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
+ compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`.
+
+* :command:`add_library` command ``ALIAS`` option learned to support
+ import libraries of the ``UNKNOWN`` type.
+
+* AppleClang compiler have learned how to compile C++20.
+
+* Support for the Clang-based ARM compiler was added with compiler id ``ARMClang``.
+
+* 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``.
+
+* 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.
+
+* 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).
+
+* 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 :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.
+
+* 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)`.
+ This may be used after building a project to run installation without
+ using the generated build system or the native build tool.
+
+* 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:`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:`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 ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
+ :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
+
+* 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.
+
+* 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.
+
+* 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 :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`
+ 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``.
+
+* 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.