Changes made since CMake 3.12 include the following.
Green Hills MULTIgenerator has been updated:
Added support for architecture selection through
Added support for toolset selection through
Added support for platform selection through
No longer checks that
armbased compilers are installed but ensures that the correct
No longer hard-codes ARM files, BSP, toolset, or OS locations.
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
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
-E create_symlinkcommand can now be used on Windows.
add_link_options()command was created to add link options in the current directory.
install(TARGETS)command learned to install targets created outside the current directory.
link_directories()command gained options to control insertion position.
list(SORT)command gained options to control the comparison operation used to order the entries.
math()command gained options for hexadecimal.
target_link_directories()command was created to specify link directories for targets and their dependents.
target_link_options()command was created to specify link options for targets and their dependents.
INTERFACE_LINK_DEPENDStarget property was created to specify transitive link dependencies on files.
STATIC_LIBRARY_OPTIONStarget property was created to specify archiver options to use when creating static libraries.
FindBoostmodule gained a
Boost_ARCHITECTUREoption to specify a Boost architecture-specific library filename fragment.
FindCURLmodule learned to find debug and release variants separately.
FindMatlabmodule gained new components
DATAARRAY_LIBRARYto request finding the Matlab C++ Engine and DataArray libraries respectively.
FindMatlabmodule now explicitly exports mexFunction in Visual Studio.
FindMatlabmodule gained a new
MCC_COMPILERcomponent to request finding the Matlab Compiler add-on.
FindPkgConfigmodule gained an option to create imported targets in global scope.
FindPkgConfigmodule gained support for
>operators for version checks in addition to the already supported operators
Subversion_WC_INFOcommand gained an
IGNORE_SVN_FAILUREoption to suppress failures, e.g. when the source tree is not under Subversion control.
--progressoption to enable a live test progress summary when output goes to a terminal.
CPack DEB Generatorlearned to split debug symbols into a corresponding .ddeb package when
CPack DEB Generatorlearned to honor the
SOURCE_DATE_EPOCHenvironment variable when packaging files. This is useful for generating reproducible packages.
CPack gained a new
CPack External Generatorwhich 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.
An explicit deprecation diagnostic was added for policies
CMP0054and below were already deprecated). The
cmake-policies(7)manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
The precompiled binaries provided on
cmake.orgnow include qthelp-format documentation.
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
The Makefile Generators learned to remove custom command and custom target byproducts during
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
CMP0076policy was added to provide backward compatibility with the old behavior where required.
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.
Changes made since CMake 3.13.0 include the following.
CMake 3.13.0 included a change to pass compiler implicit include directories to the
AUTOMOC. This has been reverted due to regressing existing builds and will need further investigation before being re-introduced in a later release.
Visual Studio 15 2017generator 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.
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.
In CMake 3.13.0 through 3.13.4, calling
PRIVATEdependencies to a static library created in another directory (under policy
NEWbehavior) would incorrectly propagate usage requirements of those dependencies to dependents that link the static library. This has been fixed.