Changes made since CMake 3.5 include the following.
- The Ninja generator learned to produce phony targets
of the form sub/dir/all to drive the build of a subdirectory.
This is equivalent to cd sub/dir; make all with
Makefile Generators.
- The Ninja generator now includes system header files in build
dependencies to ensure correct re-builds when system packages are updated.
- The Visual Studio 14 2015 generator learned to support the
Clang/C2 toolsets, e.g. with the -T v140_clang_3_7 option.
This feature is experimental.
- The CMakePushCheckState module now pushes/pops/resets the variable
CMAKE_EXTRA_INCLUDE_FILE used in CheckTypeSize.
- The ExternalProject module leared the GIT_SHALLOW 1
option to perform a shallow clone of a Git repository.
- The ExternalProject module learned to initialize Git submodules
recursively and also to initialize new submodules on updates. Use the
GIT_SUBMODULES option to restrict which submodules are initalized and
updated.
- The ExternalProject module leared the DOWNLOAD_NO_EXTRACT 1
argument to skip extracting the file that is downloaded (e.g., for
self-extracting shell installers or .msi files).
- The ExternalProject module now uses TLS_VERIFY when fetching
from git repositories.
- The FindBLAS and FindLAPACK modules learned to
support OpenBLAS.
- The FindCUDA module learned to find the cublas_device library.
- The FindGTest module gtest_add_tests function now causes
CMake to automatically re-run when test sources change so that they
can be re-scanned.
- The FindLTTngUST module was introduced to find the LTTng-UST
library.
- The FindPkgConfig module learned to optionally create imported
targets for the libraries it has found.
- The FindProtobuf module learned to provide a Protobuf_VERSION
variable and check the version number requested in a find_package()
call.
- The InstallRequiredSystemLibraries module learned a new
CMAKE_INSTALL_UCRT_LIBRARIES option to enable app-local deployment
of the Windows Universal CRT libraries with Visual Studio 2015.
- The ctest_update() command now looks at the
CTEST_GIT_INIT_SUBMODULES variable to determine whether
submodules should be updated or not before updating.
- The ctest_update() command will now synchronize submodules on an
update. Updates which add submodules or change a submodule’s URL will now be
pulled properly.
- The Compile Features functionality
is now aware of features supported by Intel C++ compilers versions 12.1
through 16.0 on UNIX platforms.
- The CMakeForceCompiler module and its macros are now deprecated.
See module documentation for an explanation.
- The find_library(), find_path(), and find_file()
commands no longer search in installation prefixes derived from the PATH
environment variable on non-Windows platforms. This behavior was added in
CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
Users that keep some <prefix>/bin directories in the PATH just for
their tools do not necessarily want any supporting <prefix>/lib
directories searched. One may set the CMAKE_PREFIX_PATH environment
variable with a ;-list of prefixes that are
to be searched.
- The Visual Studio 7 .NET 2003 generator is now
deprecated and will be removed in a future version of CMake.
- The Visual Studio 7 generator (for VS .NET 2002) has been
removed. It had been deprecated since CMake 3.3.
- The Visual Studio 6 generator has been removed.
It had been deprecated since CMake 3.3.
- The precompiled OS X binary provided on cmake.org now requires
OS X 10.7 or newer.
- On Linux and FreeBSD platforms, when building CMake itself from source and
not using a system-provided libcurl, OpenSSL is now used by default if it is
found on the system. This enables SSL/TLS support for commands supporting
network communication via https, such as file(DOWNLOAD),
file(UPLOAD), and ctest_submit().
- The cmake(1) --build command-line tool now rejects multiple
--target options with an error instead of silently ignoring all but the
last one.
- AUTOMOC now diagnoses name collisions when multiple source
files in different directories use #include <moc_foo.cpp> with the
same name (because the generated moc_foo.cpp files would collide).
- The FindBISON module BISON_TARGET macro now supports
special characters by passing the VERBATIM option to internal
add_custom_command() calls. This may break clients that
added escaping manually to work around the bug.
- The FindFLEX module FLEX_TARGET macro now supports
special characters by passing the VERBATIM option to internal
add_custom_command() calls. This may break clients that
added escaping manually to work around the bug.
- The FindProtobuf module input and output variables were all renamed
from PROTOBUF_ to Protobuf_ for consistency with other find modules.
Input variables of the old case will be honored if provided, and output
variables of the old case are always provided.
- The CPackRPM module now supports upper cased component
names in per component CPackRPM specific variables.
E.g. component named foo now expects component specific
variable to be CPACK_RPM_FOO_PACKAGE_NAME while before
it expected CPACK_RPM_foo_PACKAGE_NAME.
Upper cased component name part in variables is compatible
with convention used for other CPack variables.
For back compatibility old format of variables is still valid
and preferred if both versions of variable are set, but the
preferred future use is upper cased component names in variables.
New variables that will be added to CPackRPM in later versions
will only support upper cased component variable format.
- The CPack NSIS generator’s configuration file template was fixed to
quote the path to the uninstaller tool used by the
CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL option.
This avoids depending on an insecure Windows feature to run an
uninstaller tool with a space in the path.