[CMake] [ANNOUNCE] CMake 3.7.0-rc1 now ready for testing!
Robert Maynard
robert.maynard at kitware.com
Tue Oct 4 16:32:25 EDT 2016
I am proud to announce the first CMake 3.7 release candidate.
https://cmake.org/download/
Documentation is available at:
https://cmake.org/cmake/help/v3.7
Release notes appear below and are also published at
https://cmake.org/cmake/help/v3.7/release/3.7.html
Some of the more significant changes in CMake 3.7 are:
* CMake now supports Cross Compiling for Android with simple
toolchain files.
* The "Ninja" generator learned to conditionally support Fortran
when using a "ninja" tool that has the necessary features. See
generator documentation for details.
* The "if()" command gained new boolean comparison operations
"LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL",
"VERSION_LESS_EQUAL", and "VERSION_GREATER_EQUAL".
* 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. See policy "CMP0066".
* "Toolchain files" may now set "CMAKE_EXE_LINKER_FLAGS_INIT",
"CMAKE_SHARED_LINKER_FLAGS_INIT", and
"CMAKE_MODULE_LINKER_FLAGS_INIT" variables to initialize the
"CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS", and
"CMAKE_MODULE_LINKER_FLAGS" cache entries the first time a language
is enabled in a build tree.
* CTest now supports test fixtures through the new "FIXTURES_SETUP",
"FIXTURES_CLEANUP" and "FIXTURES_REQUIRED" test properties. When
using regular expressions or "--rerun-failed" to limit the tests to
be run, a fixture's setup and cleanup tests will automatically be
added to the execution set if any test requires that fixture.
* We no longer provide Linux i386 binaries for download from
"cmake.org" for new versions of CMake.
* Vim support files "cmake-indent.vim", "cmake-syntax.vim", and
"cmake-help.vim" have been removed in favor of the files now
provided from the vim-cmake-syntax project.
* Support for building CMake itself with some compilers was dropped:
* Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
* MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
CMake still supports generating build systems for other projects
using these compilers.
CMake 3.7 Release Notes
***********************
Changes made since CMake 3.6 include the following.
New Features
============
Platforms
---------
* CMake now supports Cross Compiling for Android with simple
toolchain files.
* The Clang compiler is now supported on AIX.
Generators
----------
* The "Ninja" generator learned to conditionally support Fortran
when using a "ninja" tool that has the necessary features. See
generator documentation for details.
* The "Ninja" generator learned to produce phony targets of the form
"sub/dir/{test,install,package}" to drive the build of a
subdirectory installation, test or packaging target. This is
equivalent to "cd sub/dir; make {test,install,package}" with
Makefile Generators.
* The "Visual Studio 15" generator was added. This is experimental
and based on Preview 4 because this version of VS has not been
released.
* Visual Studio Generators for VS 2010 and above learned to place
".natvis" source files into VS project files properly.
* The "Xcode" generator's rudimentary Swift language support learned
to honor a new "CMAKE_Swift_LANGUAGE_VERSION" variable to tell Xcode
what version of Swift is used by the source.
* The "CodeLite" generator gained a new "CMAKE_CODELITE_USE_TARGETS"
option to change project creation from projects to targets.
Commands
--------
* The "add_custom_command()" command gained a new "DEPFILE" option
that works with the "Ninja" generator to provide implicit dependency
information to the build tool.
* The "cmake_parse_arguments()" command gained a new "PARSE_ARGV"
mode to read arguments directly from "ARGC" and "ARGV#" variables
inside a "function()" body.
* The "export()" command gained an "ANDROID_MK" option to generate
"Android.mk" files referencing CMake-built libraries as prebuilts
for the Android NDK build system.
* The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained
"HTTPHEADER <HTTP-header>" and "USERPWD <username>:<password>"
options.
* The "find_library()" and "find_package()" commands learned to
search in "lib32/" directories when the build targets a 32-bit
architecture. See the "FIND_LIBRARY_USE_LIB32_PATHS" global
property.
* The "find_package()" command gained the possibility of sorting
compatible libraries by "NAME" or by "NATURAL" sorting by setting
the two new variables "CMAKE_FIND_PACKAGE_SORT_ORDER" and
"CMAKE_FIND_PACKAGE_SORT_DIRECTION".
* The "if()" command gained new boolean comparison operations
"LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL",
"VERSION_LESS_EQUAL", and "VERSION_GREATER_EQUAL".
* The "install()" command gained an "EXPORT_ANDROID_MK" subcommand
to install "Android.mk" files referencing installed libraries as
prebuilts for the Android NDK build system.
* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands gained
support for the "%a" and "%b" placeholders. These are the
abbreviated weekday and month names.
* 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. See policy "CMP0066".
Variables
---------
* Variable "CMAKE_FIND_PACKAGE_SORT_ORDER" was added to control the
sorting mode of the "find_package()" command.
* Variable "CMAKE_FIND_PACKAGE_SORT_DIRECTION" was added to control
the sorting direction the "find_package()" command.
* "Toolchain files" may now set a "CMAKE_<LANG>_FLAGS_INIT" variable
to initialize the "CMAKE_<LANG>_FLAGS" cache entry the first time a
language is enabled in a build tree.
* "Toolchain files" may now set "CMAKE_EXE_LINKER_FLAGS_INIT",
"CMAKE_SHARED_LINKER_FLAGS_INIT", and
"CMAKE_MODULE_LINKER_FLAGS_INIT" variables to initialize the
"CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS", and
"CMAKE_MODULE_LINKER_FLAGS" cache entries the first time a language
is enabled in a build tree.
Properties
----------
* On Apple platforms the "BUNDLE_EXTENSION" target property now also
applies to Frameworks and App Bundles.
* A "BINARY_DIR" directory property was added to get the absolute
path to the binary directory corresponding to the source directory
on which the property is read.
* A "BUILDSYSTEM_TARGETS" directory property was added to get the
list of logical buildsystem target names added by the project in a
directory.
* A "LINK_WHAT_YOU_USE" target property and supporting
"CMAKE_LINK_WHAT_YOU_USE" variable were introduced to detect (on
UNIX) shared libraries that are linked but not needed by running
"ldd -r -u".
* A "SOURCE_DIR" directory property was added to get the absolute
path to the source directory associated with a directory.
* A "SUBDIRECTORIES" directory property was added to get the list of
subdirectories added by a project in a directory.
* A "VS_SDK_REFERENCES" target property was added to tell Visual
Studio Generators to reference the named SDKs.
* A "VS_TOOL_OVERRIDE" source file property was created to tell
Visual Studio Generators what tool to use for a source file.
* The "WINDOWS_EXPORT_ALL_SYMBOLS" target property now applies to
executable targets with the "ENABLE_EXPORTS" property set.
* A "XCODE_FILE_ATTRIBUTES" source file property was added to tell
the "Xcode" generator to generate custom content in the Xcode
project attributes for the file.
Modules
-------
* An "AndroidTestUtilities" module was added to manage transfer of
test data to an Android device.
* The "CheckFortranSourceCompiles" module macro
"CHECK_Fortran_SOURCE_COMPILES" gained a "SRC_EXT" option to specify
a custom test Fortran source file extension.
* The "ExternalProject" module gained "HTTP_USERNAME" and
"HTTP_PASSWORD" options to set http download credentials.
* The "ExternalProject" module gained a "HTTP_HEADER" option to add
http download headers.
* The "FindBISON" module "BISON_TARGET" macro learned a new
"REPORT_FILE" option to specify the bison "--report-file=" option.
* The "FindBZip2" module now provides imported targets.
* A "FindICU" module was introduced to find the International
Components for Unicode (ICU) libraries and programs.
* The "FindMatlab" module learned to find a SIMULINK component.
* The "FindOpenCL" module now provides imported targets.
* The "FindOpenMP" module learned to detect the OpenMP version
(specification date) from the compiler.
* A "FindVulkan" module was added.
* The "GenerateExportHeader" module learned a new
"CUSTOM_CONTENT_FROM_VARIABLE" option to specify a variable
containing custom content for inclusion in the generated header.
* The "GNUInstallDirs" module gained a new
"GNUInstallDirs_get_absolute_install_dir()" command.
* The "UseJava" module gained APIs to "export" jar targets for use
by external CMake projects. See the "install_jar_exports" and
"export_jars" functions.
CTest
-----
* CTest now supports test fixtures through the new "FIXTURES_SETUP",
"FIXTURES_CLEANUP" and "FIXTURES_REQUIRED" test properties. When
using regular expressions or "--rerun-failed" to limit the tests to
be run, a fixture's setup and cleanup tests will automatically be
added to the execution set if any test requires that fixture.
* The "ctest_configure()", "ctest_build()", "ctest_test()",
"ctest_coverage()", and "ctest_upload()" commands gained a new
"CAPTURE_CMAKE_ERROR" option to capture any errors that occur as the
commands run into a variable and avoid affecting the return code of
the "ctest(1)" process.
CPack
-----
* CPack gained a "productbuild" generator on OS X, configured by the
"CPackProductBuild" module.
* CPack gained a new "CPACK_PACKAGE_CHECKSUM" variable to enable
generation of a checksum file for each package file.
* The "CPackDeb" module learned to support long file names when
archive format is set to GNU tar. See "CPACK_DEBIAN_ARCHIVE_TYPE"
* The "CPackIFW" module gained a new
"cpack_ifw_add_package_resources()" command to include additional
resources in the installer binary.
* The "CPackIFW" module "cpack_ifw_configure_component()" and
"cpack_ifw_configure_component_group()" commands gained a new
"USER_INTERFACES" option to add a list of additonal pages to the IFW
installer.
* The "CPackRPM" module learned to generate debuginfo packages on
demand. See "CPACK_RPM_DEBUGINFO_PACKAGE" and its per component
version.
* The "CPackRPM" module learned to generate source rpm (SRPM)
packages on demand. See "CPACK_RPM_PACKAGE_SOURCES",
"CPACK_RPM_SOURCE_PKG_BUILD_PARAMS" and
"CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX".
* The CPack NSIS generator now supports
"CPACK_NSIS_<compName>_INSTALL_DIRECTORY". This can be used to set
component specific installation directories.
* The CPack WIX generator now supports
"CPACK_WIX_SKIP_PROGRAM_FOLDER" to allow specification of a custom
absolute installation prefix outside of the ProgramFiles folders.
* The CPack WIX generator now supports
"CPACK_COMPONENT_<compName>_DISABLED". This can be used to deselect
a component from being installed by default.
* The CPack WIX generator now supports "CPACK_WIX_PATCH_FILE"
fragments for Feature elements.
* The CPack WIX generator now supports
"CPACK_WIX_ROOT_FEATURE_TITLE" and
"CPACK_WIX_ROOT_FEATURE_DESCRIPTION" to allow the specification of a
custom title and description for the root feature element.
Other
-----
* "cmake(1)" gained a "-E capabilities" option to provide a machine-
readable (JSON) description of the capabilities of the cmake tool
(available generators, etc.).
* A new "cmake-server(7)" mode was added to provide semantic
information about a CMake-generated buildsystem to clients through a
JSON protocol. Currently all protocols are experimental and subject
to change.
* The "cmake(1)" command learned a "--trace-source=<file>" option.
* "ccmake(1)" learned to support vim-like navigation bindings.
* "cmake-gui(1)" gained a button to open the generated project file
for Visual Studio Generators and the "Xcode" generator.
Deprecated and Removed Features
===============================
* We no longer provide Linux i386 binaries for download from
"cmake.org" for new versions of CMake.
* Vim support files "cmake-indent.vim", "cmake-syntax.vim", and
"cmake-help.vim" have been removed in favor of the files now
provided from the vim-cmake-syntax project.
* Support for building CMake itself with some compilers was dropped:
* Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
* MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
CMake still supports generating build systems for other projects
using these compilers.
Other Changes
=============
* The Fortran dependency scanner learned to support the syntax of
Fortran Submodules.
* Vim support files "indent/cmake.vim" and "syntax/cmake.vim" from
the vim-cmake-syntax project are now distributed with CMake.
More information about the CMake
mailing list