[cmake-developers] [ANNOUNCE] CMake 3.4.0-rc1 is now ready!
Robert Maynard
robert.maynard at kitware.com
Tue Oct 6 11:43:11 EDT 2015
I am proud to announce the first CMake 3.4 release candidate.
Sources and binaries are available at:
https://cmake.org/download/
Documentation is available at:
https://cmake.org/cmake/help/v3.4
Release notes appear below and are also published at
https://cmake.org/cmake/help/v3.4/release/3.4.html
Some of the more significant features of CMake 3.4 are:
* The "if()" command learned a new "TEST" operator that evaluates to
true if a given test name has been defined by the "add_test()"
command. See policy "CMP0064".
* The "install(DIRECTORY)" command "DESTINATION" option learned to
support "generator expressions".
* The "install(FILES)" command "DESTINATION" option learned to
support "generator expressions".
* 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.
Deprecated and Removed Features:
* The "CMakeExpandImportedTargets" module is now documented as
deprecated. See module documentation for an explanation.
* The "CMAKE_USE_RELATIVE_PATHS" variable no longer has any effect.
Previously it was partially implemented and unreliable.
CMake 3.4 Release Notes
***********************
Changes made since CMake 3.3 include the following.
New Features
============
Generators
----------
* 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.
Commands
--------
* The "find_program()" command learned a "NAMES_PER_DIR" option to
consider all given "NAMES" in each directory before moving on to the
next directory.
* The "get_filename_component()" command learned a new "BASE_DIR"
subcommand. This is used to specify a base directory when
calculating an absolute path from a relative path.
* The "if()" command learned a new "TEST" operator that evaluates to
true if a given test name has been defined by the "add_test()"
command. See policy "CMP0064".
* The "install(DIRECTORY)" command "DESTINATION" option learned to
support "generator expressions".
* The "install(FILES)" command "DESTINATION" option learned to
support "generator expressions".
* The "string()" command learned a new "APPEND" subcommand.
Variables
---------
* The Makefile Generators and the "Ninja" generator learned to add
compiler launcher tools like distcc and ccache along with the
compiler for "C" and "CXX" languages. See the
"CMAKE_<LANG>_COMPILER_LAUNCHER" variable and
"<LANG>_COMPILER_LAUNCHER" target property for details.
* New "CMAKE_LINK_SEARCH_START_STATIC" and
"CMAKE_LINK_SEARCH_END_STATIC" variables were introduced to
initialize the "LINK_SEARCH_START_STATIC" and
"LINK_SEARCH_END_STATIC" target properties, respectively.
Properties
----------
* Visual Studio Generators learned to support additonal target
properties to customize projects for NVIDIA Nsight Tegra Visual
Studio Edition:
* "ANDROID_ANT_ADDITIONAL_OPTIONS"
* "ANDROID_ARCH"
* "ANDROID_ASSETS_DIRECTORIES"
* "ANDROID_JAR_DEPENDENCIES"
* "ANDROID_JAR_DIRECTORIES"
* "ANDROID_JAVA_SOURCE_DIR"
* "ANDROID_NATIVE_LIB_DEPENDENCIES"
* "ANDROID_NATIVE_LIB_DIRECTORIES"
* "ANDROID_PROCESS_MAX"
* "ANDROID_PROGUARD"
* "ANDROID_PROGUARD_CONFIG_PATH"
* "ANDROID_SECURE_PROPS_PATH"
* "ANDROID_SKIP_ANT_STEP"
* "ANDROID_STL_TYPE"
* The "ARCHIVE_OUTPUT_DIRECTORY", "LIBRARY_OUTPUT_DIRECTORY", and
"RUNTIME_OUTPUT_DIRECTORY" target properties learned to support
"generator expressions".
* The "SOURCE_DIR" and "BINARY_DIR" target properties were
introduced to allow project code to query where a target is defined.
* The "OUTPUT_NAME" target property and its variants learned to
support "generator expressions".
* A "TARGET_MESSAGES" global property was added to tell the Makefile
Generators whether to generate commands to print output after each
target is completed.
* On Windows with MS-compatible tools, CMake learned to optionally
generate a module definition (".def") file for "SHARED" libraries.
See the "WINDOWS_EXPORT_ALL_SYMBOLS" target property.
Modules
-------
* 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.
Generator Expressions
---------------------
* A new "$<SHELL_PATH:...>" "generator expression" has been added.
CTest
-----
* 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.
CPack
-----
* The "CPackDeb" module learned to set package dependencies per
component. See variables:
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES"
* "CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS"
* 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.
Other
-----
* 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.
Deprecated and Removed Features
===============================
* The "CMakeExpandImportedTargets" module is now documented as
deprecated. See module documentation for an explanation.
* The "CMAKE_USE_RELATIVE_PATHS" variable no longer has any effect.
Previously it was partially implemented and unreliable.
Other Changes
=============
* 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.
More information about the cmake-developers
mailing list