Help/release/3.6.rst
CMake 3.6 Release Notes
.. only:: html
.. contents::
Changes made since CMake 3.5 include the following.
The :generator: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
:ref:Makefile Generators.
The :generator:Ninja generator now includes system header files in build
dependencies to ensure correct re-builds when system packages are updated.
The :generator: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 :command:add_custom_command and :command:add_custom_target commands
learned how to use the :prop_tgt:CROSSCOMPILING_EMULATOR executable
target property.
The :command:install command learned a new EXCLUDE_FROM_ALL option
to leave installation rules out of the default installation.
The :command:list command gained a FILTER sub-command to filter
list elements by regular expression.
The :command:string(TIMESTAMP) and :command:file(TIMESTAMP)
commands gained support for the %s placeholder. This is
the number of seconds since the UNIX Epoch.
A :variable:CMAKE_DEPENDS_IN_PROJECT_ONLY variable was introduced
to tell :ref:Makefile Generators to limit dependency scanning only
to files in the project source and build trees.
A new :variable:CMAKE_HOST_SOLARIS variable was introduced to
indicate when CMake is running on an Oracle Solaris host.
A :variable:CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES variable was
added for use by toolchain files to specify system include directories
to be appended to all compiler command lines.
The :variable:CMAKE_<LANG>_STANDARD_LIBRARIES variable is now documented.
It is intended for use by toolchain files to specify system libraries to be
added to all linker command lines.
A :variable:CMAKE_NINJA_OUTPUT_PATH_PREFIX variable was introduced
to tell the :generator:Ninja generator to configure the generated
build.ninja file for use as a subninja.
A :variable:CMAKE_TRY_COMPILE_PLATFORM_VARIABLES variable was
added for use by toolchain files to specify platform-specific
variables that must be propagated by the :command:try_compile
command into test projects.
A :variable:CMAKE_TRY_COMPILE_TARGET_TYPE variable was added
to optionally tell the :command:try_compile command to build
a static library instead of an executable. This is useful for
cross-compiling toolchains that cannot link binaries without
custom flags or scripts.
A :prop_tgt:DEPLOYMENT_REMOTE_DIRECTORY target property was introduced
to tell the :generator:Visual Studio 9 2008 and
:generator:Visual Studio 8 2005 generators to generate the "remote
directory" for WinCE project deployment and debugger settings.
A :prop_tgt:<LANG>_CLANG_TIDY target property and supporting
:variable:CMAKE_<LANG>_CLANG_TIDY variable were introduced to tell the
:ref:Makefile Generators and the :generator:Ninja generator to run
clang-tidy along with the compiler for C and CXX languages.
A :prop_test:TIMEOUT_AFTER_MATCH test property was introduced to
optionally tell CTest to enforce a secondary timeout after matching
certain output from a test.
A :prop_tgt:VS_CONFIGURATION_TYPE target property was introduced
to specify a custom project file type for :ref:Visual Studio Generators
supporting VS 2010 and above.
A :prop_dir:VS_STARTUP_PROJECT directory property was introduced
to specify for :ref:Visual Studio Generators the default startup
project for generated solutions (.sln files).
The :module:CMakePushCheckState module now pushes/pops/resets the variable
CMAKE_EXTRA_INCLUDE_FILES used in :module:CheckTypeSize.
The :module:ExternalProject module leared the GIT_SHALLOW 1
option to perform a shallow clone of a Git repository.
The :module: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 initialized and
updated.
The :module: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 :module:ExternalProject module now uses TLS_VERIFY when fetching
from git repositories.
The :module:FindBLAS and :module:FindLAPACK modules learned to
support OpenBLAS <https://www.openblas.net>__.
The :module:FindCUDA module learned to find the cublas_device library.
The :module: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 :module:FindLTTngUST module was introduced to find the LTTng-UST
library.
The :module:FindPkgConfig module learned to optionally create imported
targets for the libraries it has found.
The :module:FindProtobuf module learned to provide a Protobuf_VERSION
variable and check the version number requested in a :command:find_package
call.
The :module: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 Clang compiler is now supported on CYGWIN.
Support was added for the Bruce C Compiler with compiler id Bruce.
The :command:ctest_update command now looks at the
:variable:CTEST_GIT_INIT_SUBMODULES variable to determine whether
submodules should be updated or not before updating.
The :command: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 :cpack_gen:CPack DEB Generator learned how to handle $ORIGIN
in CMAKE_INSTALL_RPATH when :variable:CPACK_DEBIAN_PACKAGE_SHLIBDEPS
is used for dependency auto detection.
The :cpack_gen:CPack DEB Generator learned how to generate
DEBIAN/shlibs control file when package contains shared libraries.
The :cpack_gen:CPack DEB Generator learned how to generate
DEBIAN/postinst and DEBIAN/postrm files if the package installs
libraries in ldconfig-controlled locations (e.g. /lib/, /usr/lib/).
The :cpack_gen:CPack DEB Generator learned how to generate dependencies
between Debian packages if multi-component setup is used and
:variable:CPACK_COMPONENT_<compName>_DEPENDS variables are set.
For backward compatibility this feature is disabled by default.
See :variable:CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS.
The :cpack_gen:CPack DEB Generator learned how to set custom package
file names including how to generate properly-named Debian packages::
<PackageName><VersionNumber>-<DebianRevisionNumber><DebianArchitecture>.deb
For backward compatibility this feature is disabled by default. See
:variable:CPACK_DEBIAN_FILE_NAME and
:variable:CPACK_DEBIAN_<COMPONENT>_FILE_NAME.
The :cpack_gen:CPack DEB Generator learned how to set the package
release number (DebianRevisionNumber in package file name when
used in combination with DEB-DEFAULT value set by
:variable:CPACK_DEBIAN_FILE_NAME).
See :variable:CPACK_DEBIAN_PACKAGE_RELEASE.
The :cpack_gen:CPack DEB Generator learned how to set the package
architecture per-component.
See :variable:CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE.
The :cpack_gen:CPack DragNDrop Generator learned a new option to skip the
/Applications symlink.
See the :variable:CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK variable.
The :module:CPackIFW module gained a new
:command:cpack_ifw_update_repository command to update a QtIFW-specific
repository from a remote repository.
The :cpack_gen:CPack RPM Generator learned how to set RPM dist tag
as part of RPM Release: tag when enabled (mandatory on some Linux
distributions for e.g. on Fedora).
See :variable:CPACK_RPM_PACKAGE_RELEASE_DIST.
The :cpack_gen:CPack RPM Generator learned how to set default values
for owning user/group and file/directory permissions of package content.
See :variable:CPACK_RPM_DEFAULT_USER, :variable:CPACK_RPM_DEFAULT_GROUP,
:variable:CPACK_RPM_DEFAULT_FILE_PERMISSIONS,
:variable:CPACK_RPM_DEFAULT_DIR_PERMISSIONS and their per component
counterparts.
The :cpack_gen:CPack RPM Generator learned how to set user defined
package file names, how to specify that rpmbuild should decide on file
name format as well as handling of multiple rpm packages generated by a
single user defined spec file.
See :variable:CPACK_RPM_FILE_NAME and
:variable:CPACK_RPM_<component>_FILE_NAME.
The :cpack_gen:CPack RPM Generator learned how to correctly handle symlinks
that are pointing outside generated packages.
Compile Features <cmake-compile-features(7)> functionality
is now aware of features supported by Intel C++ compilers versions 12.1
through 16.0 on UNIX platforms.The :module:CMakeForceCompiler module and its macros are now deprecated.
See module documentation for an explanation.
The :command:find_library, :command:find_path, and :command: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 :ref:semicolon-separated list <CMake Language Lists> of prefixes that are
to be searched.
The :generator:Visual Studio 7 .NET 2003 generator is now
deprecated and will be removed in a future version of CMake.
The :generator:Visual Studio 7 generator (for VS .NET 2002) has been
removed. It had been deprecated since CMake 3.3.
The :generator: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 :command:file(DOWNLOAD),
:command:file(UPLOAD), and :command:ctest_submit.
The :manual:cmake(1) --build command-line tool now rejects multiple
--target options with an error instead of silently ignoring all but the
last one.
:prop_tgt: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 :module:FindBISON module bison_target() command now supports
special characters by passing the VERBATIM option to internal
:command:add_custom_command calls. This may break clients that
added escaping manually to work around the bug.
The :module:FindFLEX module flex_target() command now supports
special characters by passing the VERBATIM option to internal
:command:add_custom_command calls. This may break clients that
added escaping manually to work around the bug.
The :module: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 :cpack_gen:CPack RPM Generator 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
:variable: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.