Changes made since CMake 3.3 include the following.
- The Visual Studio 14 2015 generator learned to select
a Windows 10 SDK based on the value of the CMAKE_SYSTEM_VERSION
variable and the SDKs available on the host.
- CMake learned rudimentary support for the Apple Swift language. When using
the Xcode generator with Xcode 6.1 or higher, one may enable
the Swift language with the enable_language() command or the
project() command (this is an error with other generators or when
Xcode is too old). Then one may list .swift source files in targets
for compilation.
- The ExternalProject module ExternalProject_Add()
function GIT_SUBMODULES option now also limits the set of
submodules that are initialized in addition to the prior behavior
of limiting the set of submodules that are updated.
- The ExternalProject module learned new USES_TERMINAL
arguments for giving steps exclusive terminal access. This is
useful with the Ninja generator to monitor CMake
superbuild progress and prevent CPU oversubscription.
- The FindBISON module BISON_TARGET macro learned a
new DEFINES_FILE option to specify a custom output header
to be generated.
- The FindHDF5 module learend a new HDF5_PREFER_PARALLEL
option allowing users to specify that a parallel HDF5 tool is
preferred if both are available.
- The FindIce module now provides imported targets.
- The FindJava module learned to optionally find
the idlj and jarsigner tools.
- The FindOpenSSL module now provides imported targets.
- The FindOpenSSL module learned a new OPENSSL_USE_STATIC_LIBS
option to search only for static libraries.
- The FindPkgConfig learned a new pkg_get_variable()
command which may be used to query for arbitrary variables from a package
(such as for related tools or data and plugin install paths).
- The FindProtobuf module gained a new
protobuf_generate_python() function to generate python
sources from .proto files.
- The FindTIFF module learned to search separately for
debug and release variants.
- The FindwxWidgets module learned to support version requests.
- The FindXercesC module learned to search separately for
debug and release variants.
- The FindZLIB module learned to search separately for
debug and release variants.
- The GNUInstallDirs module learned special default values
for certain installation prefixes according to the GNU Coding
Standards and the Filesystem Hierarchy Standard.
- The UseJava module add_jar function learned
to support response files (e.g. @srcs.txt) for source
specification.
- The UseJava module install_jar function learned
new DESTINATION and COMPONENT options to specify
the corresponding install() command options.
- The UseJava module gained a new create_javah
function to create C headers from Java classes.
- CTest learned to optionally measure the CPU load during parallel
testing and avoid starting tests that may cause the load to exceed
a given threshold. See the ctest(1) command --test-load
option, the TestLoad setting of the CTest Test Step,
the CTEST_TEST_LOAD variable, and the TEST_LOAD
option of the ctest_test() command.
- ctest(1) learned options
--test-output-size-passed and --test-output-size-failed
to customize the limit on test output size submitted when
running as a Dashboard Client.
- The CPackDeb module learned to set package dependencies
per component. See variables:
- The CPack module learned to package empty directories.
- The CPack module gained a new setting, CPACK_VERBATIM_VARIABLES,
which can be used to ensure the cpack program receives the settings’ values
exactly as they were set, even if they contain CMake-special characters.
For compatibility, it’s off by default.
- The Compile Features functionality
is now aware of features supported by GNU C compilers on Windows.
- CMake learned to honor *.manifest source files with MSVC tools.
Manifest files named as sources of .exe and .dll targets
will be merged with linker-generated manifests and embedded in the
binary.
- The Concurrent Fortran 77 compiler is now supported.
Its compiler id is CCur.
- cmake(1) gained a new --trace-expand command line option
that is like --trace but expands variable references in the output.
- The CheckFunctionExists, CheckLibraryExists,
CheckSymbolExists, and FindThreads modules learned to
work in environments where only CXX is enabled.
- The CPackDeb module now correctly excludes symlinks during package
checksum calculation.
- The CPackDeb no longer uses fakeroot and system tar program for
packaging.
- The CPack module no longer mangles settings with CMake-special
characters when they’re used as defaults for other settings. The macro
cpack_set_if_not_set, which was responsible for this, is now deprecated.
- CMake no longer links executables with flags to export symbols
unless the ENABLE_EXPORTS target property is set.
See policy CMP0065.
- The SONAME field is no longer set for MODULE libraries
created with the add_library() command. MODULE
libraries are meant for explicit dynamic loading at runtime.
They cannot be linked so SONAME is not useful.
- The internal CMAKE_<LANG>_COMPILE_OBJECT rule variable now
substitutes compiler include flags in a separate <INCLUDES> placeholder
instead of the main <FLAGS> placeholder.