[cmake-developers] [ANNOUNCE] CMake 3.6.0-rc3 now ready for testing!
Robert Maynard
robert.maynard at kitware.com
Wed Jun 22 15:13:10 EDT 2016
I am proud to announce the third CMake 3.6 release candidate.
Sources and binaries are available at:
https://cmake.org/download/
Documentation is available at:
https://cmake.org/cmake/help/v3.6
Release notes appear below and are also published at
https://cmake.org/cmake/help/v3.6/release/3.6.html
Some of the more significant features of CMake 3.6 are:
* 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 "list()" command gained a "FILTER" sub-command to filter list
elements by regular expression.
* A "CMAKE_TRY_COMPILE_TARGET_TYPE" variable was added to optionally
tell the "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 "<LANG>_CLANG_TIDY" target property and supporting
"CMAKE_<LANG>_CLANG_TIDY" variable were introduced to tell the
Makefile Generators and the "Ninja" generator to run "clang-tidy"
along with the compiler for "C" and "CXX" languages.
* 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 "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 "Compile Features" functionality is now aware of features
supported by Intel C++ compilers versions 12.1 through 16.0 on UNIX
platforms.
Deprecated and Removed Features
===============================
* The "CMakeForceCompiler" module and its macros are now deprecated.
See module documentation for an explanation.
* 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.
CMake 3.6 Release Notes
***********************
Changes made since CMake 3.5 include the following.
New Features
============
Generators
----------
* 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.
Commands
--------
* The "add_custom_command()" and "add_custom_target()" commands
learned how to use the "CROSSCOMPILING_EMULATOR" executable target
property.
* The "install()" command learned a new "EXCLUDE_FROM_ALL" option to
leave installation rules out of the default installation.
* The "list()" command gained a "FILTER" sub-command to filter list
elements by regular expression.
* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands gained
support for the "%s" placeholder. This is the number of seconds
since the UNIX Epoch.
* The "try_compile()" command source file signature now honors
configuration-specific flags (e.g. "CMAKE_<LANG>_FLAGS_DEBUG") in
the generated test project. Previously only the default such flags
for the current toolchain were used.
Variables
---------
* A "CMAKE_DEPENDS_IN_PROJECT_ONLY" variable was introduced to tell
Makefile Generators to limit dependency scanning only to files in
the project source and build trees.
* A new "CMAKE_HOST_SOLARIS" variable was introduced to indicate
when CMake is running on an Oracle Solaris host.
* A "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 "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 "CMAKE_NINJA_OUTPUT_PATH_PREFIX" variable was introduced to tell
the "Ninja" generator to configure the generated "build.ninja" file
for use as a "subninja".
* A "CMAKE_TRY_COMPILE_PLATFORM_VARIABLES" variable was added for
use by toolchain files to specify platform-specific variables that
must be propagated by the "try_compile()" command into test
projects.
* A "CMAKE_TRY_COMPILE_TARGET_TYPE" variable was added to optionally
tell the "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.
Properties
----------
* A "DEPLOYMENT_REMOTE_DIRECTORY" target property was introduced to
tell the "Visual Studio 9 2008" and "Visual Studio 8 2005"
generators to generate the "remote directory" for WinCE project
deployment and debugger settings.
* A "<LANG>_CLANG_TIDY" target property and supporting
"CMAKE_<LANG>_CLANG_TIDY" variable were introduced to tell the
Makefile Generators and the "Ninja" generator to run "clang-tidy"
along with the compiler for "C" and "CXX" languages.
* A "TIMEOUT_AFTER_MATCH" test property was introduced to optionally
tell CTest to enforce a secondary timeout after matching certain
output from a test.
* A "VS_CONFIGURATION_TYPE" target property was introduced to
specify a custom project file type for Visual Studio Generators
supporting VS 2010 and above.
* A "VS_STARTUP_PROJECT" directory property was introduced to
specify for Visual Studio Generators the default startup project for
generated solutions (".sln" files).
Modules
-------
* 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.
Platforms
---------
* The Clang compiler is now supported on CYGWIN.
* Support was added for the Bruce C Compiler with compiler id
"Bruce".
CTest
-----
* 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.
CPack
-----
* The "CPackDeb" module learned how to handle "$ORIGIN" in
"CMAKE_INSTALL_RPATH" when "CPACK_DEBIAN_PACKAGE_SHLIBDEPS" is used
for dependency auto detection.
* The "CPackDeb" module learned how to generate "DEBIAN/shlibs"
contorl file when package contains shared libraries.
* The "CPackDeb" module 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 "CPackDeb" module learned how to generate dependencies between
Debian packages if multi-component setup is used and
"CPACK_COMPONENT_<compName>_DEPENDS" variables are set. For backward
compatibility this feature is disabled by default. See
"CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS".
* The "CPackDeb" module 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
"CPACK_DEBIAN_FILE_NAME" and "CPACK_DEBIAN_<COMPONENT>_FILE_NAME".
* The "CPackDeb" module learned how to set the package release
number ("DebianRevisionNumber" in package file name when used in
combination with "DEB-DEFAULT" value set by
"CPACK_DEBIAN_FILE_NAME"). See "CPACK_DEBIAN_PACKAGE_RELEASE".
* The "CPackDeb" module learned how to set the package architecture
per-component. See "CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE".
* The "CPackDMG" module learned a new option to tell the CPack
"DragNDrop" generaor to skip the "/Applications" symlink. See the
"CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK" variable.
* The "CPackIFW" module gained a new "cpack_ifw_update_repository()"
command to update a QtIFW-specific repository from a remote
repository.
* The "CPackRPM" module 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
"CPACK_RPM_PACKAGE_RELEASE_DIST".
* The "CPackRPM" module learned how to set default values for owning
user/group and file/directory permissions of package content. See
"CPACK_RPM_DEFAULT_USER", "CPACK_RPM_DEFAULT_GROUP",
"CPACK_RPM_DEFAULT_FILE_PERMISSIONS",
"CPACK_RPM_DEFAULT_DIR_PERMISSIONS" and their per component
counterparts.
* The "CPackRPM" module 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 "CPACK_RPM_PACKAGE_NAME" and
"CPACK_RPM_<component>_PACKAGE_NAME".
* The "CPackRPM" module learned how to correctly handle symlinks
that are pointing outside generated packages.
Other
-----
* The "Compile Features" functionality is now aware of features
supported by Intel C++ compilers versions 12.1 through 16.0 on UNIX
platforms.
Deprecated and Removed Features
===============================
* 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.
Other Changes
=============
* 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.
----------------------------------------------------------------------------
Changes made since CMake 3.6.0-rc2:
Brad King (5):
VS: Fix regressed mapping for the cl `/Os` compiler flag
README: Update Issue Tracker link to new location
FindQt4: Document Qt4::QtDeclarative imported target (#16157)
Help: Clarify VS_STARTUP_PROJECT documentation
CMake 3.6.0-rc3
Domen Vrankar (2):
CPack/Deb: Fix tests for SELinux-enabled systems
CPack/Deb: Fix test to actually test the preinst script
LibArchive Upstream (1):
LibArchive 2016-06-19 (139d0576)
Rolf Eike Beer (1):
FindPkgConfig: define the imported targets also when the data
comes from cache
Tobias Hunger (1):
cmExtraCodeBlocksGenerator: Do not shuffle include directories
More information about the cmake-developers
mailing list