You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
11 KiB
290 lines
11 KiB
CMake 3.13 Release Notes
|
|
************************
|
|
|
|
.. only:: html
|
|
|
|
.. contents::
|
|
|
|
Changes made since CMake 3.12 include the following.
|
|
|
|
New Features
|
|
============
|
|
|
|
Generators
|
|
----------
|
|
|
|
* The :ref:`Visual Studio Generators` for VS 2010 and above learned to
|
|
support the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property
|
|
and supporting :module:`CheckIPOSupported` module.
|
|
|
|
* The :generator:`Xcode` generator learned to configure more Xcode Scheme
|
|
fields. See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable.
|
|
|
|
* The :generator:`Green Hills MULTI` generator has been updated:
|
|
|
|
- Added support for architecture selection through
|
|
:variable:`CMAKE_GENERATOR_PLATFORM`:
|
|
e.g. ``arm``, ``ppc``, and ``86``.
|
|
|
|
- Added support for toolset selection through
|
|
:variable:`CMAKE_GENERATOR_TOOLSET`,
|
|
e.g. ``comp_201205``, ``comp_201510``, ``comp_201722_beta``.
|
|
|
|
- Added support for platform selection through ``GHS_TARGET_PLATFORM``,
|
|
e.g. ``integrity``, ``linux``, ``standalone``, etc.
|
|
|
|
- No longer checks that ``arm`` based compilers are installed but ensures
|
|
that the correct ``gbuild.exe`` exists.
|
|
|
|
- No longer hard-codes ARM files, BSP, toolset, or OS locations.
|
|
|
|
Command-Line
|
|
------------
|
|
|
|
* The :manual:`cmake(1)` command gained the ``-S <source_dir>``
|
|
command line option to specify the location of the source directory.
|
|
This option can be used independently of ``-B``.
|
|
|
|
* The :manual:`cmake(1)` command gained the ``-B <build_dir>``
|
|
command line option to specify the location of the build directory.
|
|
This option can be used independently of ``-S``.
|
|
|
|
* The :manual:`cmake(1)` ``-E create_symlink`` command can now be used
|
|
on Windows.
|
|
|
|
Commands
|
|
--------
|
|
|
|
* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
|
learned to support generator expressions in ``WORKING_DIRECTORY`` options.
|
|
|
|
* The :command:`add_link_options` command was created to add link
|
|
options in the current directory.
|
|
|
|
* The :command:`install(TARGETS)` command learned to install targets
|
|
created outside the current directory.
|
|
|
|
* The :command:`link_directories` command gained options to control
|
|
insertion position.
|
|
|
|
* The :command:`list(SORT)` command gained options to control the
|
|
comparison operation used to order the entries.
|
|
|
|
* The :command:`math` command gained options for hexadecimal.
|
|
|
|
* The :command:`target_link_directories` command was created to
|
|
specify link directories for targets and their dependents.
|
|
|
|
* The :command:`target_link_options` command was created to
|
|
specify link options for targets and their dependents.
|
|
|
|
* The :command:`target_link_libraries` command may now be called
|
|
to modify targets created outside the current directory.
|
|
See policy :policy:`CMP0079`.
|
|
|
|
Variables
|
|
---------
|
|
|
|
* A :variable:`CMAKE_AUTOGEN_VERBOSE` variable was added to optionally
|
|
increase the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC`
|
|
and :prop_tgt:`AUTORCC` from within CMake project code.
|
|
|
|
* A :variable:`CMAKE_VS_GLOBALS` variable was added to initialize
|
|
:prop_tgt:`VS_GLOBAL_<variable>` target properties on targets as
|
|
they are created.
|
|
|
|
Properties
|
|
----------
|
|
|
|
* The :prop_tgt:`DEPLOYMENT_ADDITIONAL_FILES` target property was
|
|
added to tell the :generator:`Visual Studio 9 2008` generator
|
|
to specify additional files for deployment to WinCE devices
|
|
for remote debugging.
|
|
|
|
* The :prop_tgt:`INTERFACE_LINK_DEPENDS` target property was created
|
|
to specify transitive link dependencies on files.
|
|
|
|
* The :prop_tgt:`LINK_DEPENDS` target property learned to support
|
|
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
|
|
|
* :prop_tgt:`LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DIRECTORIES`
|
|
target properties were added to collect link directories for a target
|
|
and its dependents. Use the :command:`target_link_directories` command
|
|
to set them.
|
|
|
|
* :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
|
|
properties were added to collect link options for a target and its
|
|
dependents. Use the :command:`target_link_options` command to set them.
|
|
|
|
* A :prop_dir:`LINK_OPTIONS` directory property was added to collect
|
|
link options for targets created under the current directory.
|
|
Use the :command:`add_link_options` command to set it.
|
|
|
|
* A :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property was created
|
|
to specify archiver options to use when creating static libraries.
|
|
|
|
* A :prop_tgt:`VS_DEBUGGER_COMMAND_ARGUMENTS` target property was created to
|
|
set the debugging command line arguments with
|
|
:ref:`Visual Studio Generators` for VS 2010 and above.
|
|
|
|
* A :prop_tgt:`VS_DEBUGGER_ENVIRONMENT` target property was created to
|
|
set the debugging environment with
|
|
:ref:`Visual Studio Generators` for VS 2010 and above.
|
|
|
|
* The :prop_tgt:`VS_DEBUGGER_COMMAND` and
|
|
:prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target properties
|
|
now support generator expressions.
|
|
|
|
Modules
|
|
-------
|
|
|
|
* The :module:`FindBoost` module gained a ``Boost_ARCHITECTURE`` option
|
|
to specify a Boost architecture-specific library filename fragment.
|
|
|
|
* The :module:`FindCURL` module learned to find debug and release variants
|
|
separately.
|
|
|
|
* The :module:`FindMatlab` module gained new components ``ENGINE_LIBRARY`` and
|
|
``DATAARRAY_LIBRARY`` to request finding the Matlab C++ Engine and DataArray
|
|
libraries respectively.
|
|
|
|
* The :module:`FindMatlab` module now explicitly exports mexFunction in Visual
|
|
Studio.
|
|
|
|
* The :module:`FindMatlab` module gained a new ``MCC_COMPILER``
|
|
component to request finding the Matlab Compiler add-on.
|
|
|
|
* The :module:`FindPkgConfig` module gained an option to create imported
|
|
targets in global scope.
|
|
|
|
* The :module:`FindPkgConfig` module gained support for ``<`` and ``>``
|
|
operators for version checks in addition to the already supported
|
|
operators ``>=``, ``<=``, and ``=``.
|
|
|
|
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
|
|
gain capability to control order of resource lookup on macOS (Framework) and
|
|
Windows (Registry).
|
|
|
|
* The :module:`FindSubversion` module ``Subversion_WC_INFO`` command
|
|
gained an ``IGNORE_SVN_FAILURE`` option to suppress failures,
|
|
e.g. when the source tree is not under Subversion control.
|
|
|
|
* The :module:`UseSWIG` module learned to manage target property
|
|
:prop_tgt:`INCLUDE_DIRECTORIES` for ``SWIG`` compilation.
|
|
|
|
CTest
|
|
-----
|
|
|
|
* :manual:`ctest(1)` gained a ``--progress`` option to enable a live
|
|
test progress summary when output goes to a terminal.
|
|
|
|
CPack
|
|
-----
|
|
|
|
* The :cpack_gen:`CPack DEB Generator` learned to split debug symbols into
|
|
a corresponding .ddeb package when ``CPACK_DEBIAN_DEBUGINFO_PACKAGE`` is
|
|
set.
|
|
|
|
* The :cpack_gen:`CPack DEB Generator` learned to honor the ``SOURCE_DATE_EPOCH``
|
|
environment variable when packaging files. This is useful for generating
|
|
reproducible packages.
|
|
|
|
* CPack gained a new :cpack_gen:`CPack External Generator` which is used to
|
|
export the CPack metadata in a format that other software can understand. The
|
|
intention of this generator is to allow external packaging software to take
|
|
advantage of CPack's features when it may not be possible to use CPack for
|
|
the entire packaging process.
|
|
|
|
Deprecated and Removed Features
|
|
===============================
|
|
|
|
* An explicit deprecation diagnostic was added for policies ``CMP0055``
|
|
through ``CMP0063`` (``CMP0054`` 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.
|
|
|
|
Other Changes
|
|
=============
|
|
|
|
* The precompiled binaries provided on ``cmake.org`` now include
|
|
qthelp-format documentation.
|
|
|
|
* The :command:`option` command now honors an existing normal variable
|
|
of the same name and does nothing instead of possibly creating a cache
|
|
entry (or setting its type) and removing the normal variable.
|
|
See policy :policy:`CMP0077`.
|
|
|
|
* The :ref:`Makefile Generators` learned to remove custom command and
|
|
custom target byproducts during ``make clean``.
|
|
|
|
* The :command:`target_sources` command now interprets relative source file
|
|
paths as relative to the current source directory. This simplifies
|
|
incrementally building up a target's sources from subdirectories. The
|
|
:policy:`CMP0076` policy was added to provide backward compatibility with
|
|
the old behavior where required.
|
|
|
|
* The :module:`BundleUtilities` module may no longer be included at configure
|
|
time. This was always a bug anyway. See policy :policy:`CMP0080`.
|
|
|
|
* The :module:`UseSWIG` module has changed strategy for target naming.
|
|
See policy :policy:`CMP0078`.
|
|
|
|
* The :prop_tgt:`LINK_DIRECTORIES` target property now expects absolute paths.
|
|
See policy :policy:`CMP0081`.
|
|
|
|
* The CPack generators have been moved into their own separate section
|
|
in the documentation, rather than having the documentation in their
|
|
internal implementation modules.
|
|
These internal implementation modules are also no longer available
|
|
to scripts that may have been incorrectly including them, because
|
|
they should never have been available in the first place.
|
|
|
|
Updates
|
|
=======
|
|
|
|
Changes made since CMake 3.13.0 include the following.
|
|
|
|
3.13.2
|
|
------
|
|
|
|
* CMake 3.13.0 included a change to pass compiler implicit include
|
|
directories to the ``moc`` tool for :prop_tgt:`AUTOMOC`. This has
|
|
been reverted due to regressing existing builds and will need
|
|
further investigation before being re-introduced in a later release.
|
|
|
|
3.13.3
|
|
------
|
|
|
|
* The :generator:`Visual Studio 15 2017` generator has been fixed to work
|
|
when VS 2019 is installed.
|
|
|
|
* CMake now checks that at least one of the source or binary directory
|
|
is specified when running CMake and issues an error if both are missing.
|
|
This has always been a documented requirement, but the implementation
|
|
previously accidentally accepted cases in which neither are specified
|
|
so long as some other argument is given, and silently used the current
|
|
working directory as the source and build tree.
|
|
|
|
3.13.4
|
|
------
|
|
|
|
* The error added by 3.13.3 in cases that neither a source or binary
|
|
directory is specified has been downgraded to a warning. While this
|
|
was never intended, documented, nor supported behavior, some projects
|
|
relied on it. The error has been downgraded to a warning for the
|
|
remainder of the 3.13.x release series to allow a transition period,
|
|
but it may become a fatal error again in a later release. Scripts
|
|
relying on the old behavior can be trivially fixed by specifying
|
|
the path to the source tree (even if just ``.``) explicitly and
|
|
continue to work with all versions of CMake.
|
|
|
|
3.13.5
|
|
------
|
|
|
|
* In CMake 3.13.0 through 3.13.4, calling :command:`target_link_libraries`
|
|
to add ``PRIVATE`` dependencies to a static library created in another
|
|
directory (under policy :policy:`CMP0079` ``NEW`` behavior) would
|
|
incorrectly propagate usage requirements of those dependencies to
|
|
dependents that link the static library. This has been fixed.
|