Help/release/3.7.rst
CMake 3.7 Release Notes
.. only:: html
.. contents::
Changes made since CMake 3.6 include the following.
CMake now supports :ref:Cross Compiling for Android with simple
toolchain files.
The Clang compiler is now supported on AIX.
The :generator:Ninja generator learned to conditionally support
Fortran when using a ninja tool that has the necessary features.
See generator documentation for details.
The :generator: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 :ref:Makefile Generators.
The :generator:Visual Studio 15 2017 generator was added. This is
experimental and based on "Visual Studio 2017 RC" because this version
of VS has not been released.
:ref:Visual Studio Generators for VS 2010 and above learned to
place .natvis source files into VS project files properly.
The :generator:Xcode generator's rudimentary Swift language support
learned to honor a new :variable:CMAKE_Swift_LANGUAGE_VERSION variable
to tell Xcode what version of Swift is used by the source.
The :generator:CodeLite generator gained a new
:variable:CMAKE_CODELITE_USE_TARGETS option
to change project creation from projects to targets.
The :command:add_custom_command command gained a new DEPFILE
option that works with the :generator:Ninja generator to provide
implicit dependency information to the build tool.
The :command:cmake_parse_arguments command gained a new PARSE_ARGV
mode to read arguments directly from ARGC and ARGV#
variables inside a :command:function body.
The :command: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 :command:file(DOWNLOAD) and :command:file(UPLOAD) commands gained
HTTPHEADER <HTTP-header> and USERPWD <username>:<password> options.
The :command:find_library and :command:find_package commands learned
to search in lib32/ directories when the build targets a 32-bit
architecture. See the :prop_gbl:FIND_LIBRARY_USE_LIB32_PATHS global
property.
The :command:find_package command gained the possibility of
sorting compatible libraries by NAME or by NATURAL sorting by
setting the two new variables :variable:CMAKE_FIND_PACKAGE_SORT_ORDER
and :variable:CMAKE_FIND_PACKAGE_SORT_DIRECTION.
The :command:if command gained new boolean comparison operations
LESS_EQUAL, GREATER_EQUAL, STRLESS_EQUAL, STRGREATER_EQUAL,
VERSION_LESS_EQUAL, and VERSION_GREATER_EQUAL.
The :command: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 :command:string(TIMESTAMP) and :command:file(TIMESTAMP)
commands gained support for the %a and %b placeholders.
These are the abbreviated weekday and month names.
The :command:try_compile command source file signature now honors
configuration-specific flags (e.g. :variable:CMAKE_<LANG>_FLAGS_DEBUG)
in the generated test project. Previously only the default such flags
for the current toolchain were used. See policy :policy:CMP0066.
Variable :variable:CMAKE_FIND_PACKAGE_SORT_ORDER was added to control
the sorting mode of the :command:find_package command.
Variable :variable:CMAKE_FIND_PACKAGE_SORT_DIRECTION was added to control
the sorting direction the :command:find_package command.
:variable:Toolchain files <CMAKE_TOOLCHAIN_FILE> may now set a
:variable:CMAKE_<LANG>_FLAGS_INIT variable to initialize the
:variable:CMAKE_<LANG>_FLAGS cache entry the first time a language is
enabled in a build tree.
:variable:Toolchain files <CMAKE_TOOLCHAIN_FILE> may now set
:variable:CMAKE_EXE_LINKER_FLAGS_INIT,
:variable:CMAKE_SHARED_LINKER_FLAGS_INIT, and
:variable:CMAKE_MODULE_LINKER_FLAGS_INIT variables to initialize the
:variable:CMAKE_EXE_LINKER_FLAGS,
:variable:CMAKE_SHARED_LINKER_FLAGS, and
:variable:CMAKE_MODULE_LINKER_FLAGS cache entries the first time
a language is enabled in a build tree.
On Apple platforms the :prop_tgt:BUNDLE_EXTENSION target property
now also applies to Frameworks and App Bundles.
A :prop_dir: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 :prop_dir:BUILDSYSTEM_TARGETS directory property was added to
get the list of logical buildsystem target names added by the
project in a directory.
A :prop_tgt:LINK_WHAT_YOU_USE target property and supporting
:variable: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 :prop_dir:SOURCE_DIR directory property was added to get the
absolute path to the source directory associated with a directory.
A :prop_dir:SUBDIRECTORIES directory property was added to
get the list of subdirectories added by a project in a directory.
A :prop_tgt:VS_SDK_REFERENCES target property was added to tell
:ref:Visual Studio Generators to reference the named SDKs.
A :prop_sf:VS_TOOL_OVERRIDE source file property was created to tell
:ref:Visual Studio Generators what tool to use for a source file.
The :prop_tgt:WINDOWS_EXPORT_ALL_SYMBOLS target property now applies
to executable targets with the :prop_tgt:ENABLE_EXPORTS property set.
A :prop_sf:XCODE_FILE_ATTRIBUTES source file property was
added to tell the :generator:Xcode generator to generate
custom content in the Xcode project attributes for the file.
An :module:AndroidTestUtilities module was added to manage transfer
of test data to an Android device.
The :module:CheckFortranSourceCompiles module command
check_fortran_source_compiles() gained a SRC_EXT option
to specify a custom test Fortran source file extension.
The :module:ExternalProject module gained HTTP_USERNAME and
HTTP_PASSWORD options to set http download credentials.
The :module:ExternalProject module gained a HTTP_HEADER
option to add http download headers.
The :module:FindBISON module bison_target() command learned a new
REPORT_FILE option to specify the bison --report-file= option.
The :module:FindBZip2 module now provides imported targets.
A :module:FindICU module was introduced to find the International
Components for Unicode (ICU) libraries and programs.
The :module:FindMatlab module learned to find the SIMULINK and MAT
components.
The :module:FindMatlab module :command:matlab_add_mex command learned
to add executables and modules.
The :module:FindMatlab module :command:matlab_add_unit_test command
learned to support inline Matlab test code.
The :module:FindOpenCL module now provides imported targets.
The :module:FindOpenMP module learned to detect the OpenMP
version (specification date) from the compiler.
A :module:FindVulkan module was added.
The :module:GenerateExportHeader module learned a new
CUSTOM_CONTENT_FROM_VARIABLE option to specify a variable
containing custom content for inclusion in the generated header.
The :module:GNUInstallDirs module gained a new
:command:GNUInstallDirs_get_absolute_install_dir command.
The :module:UseJava module gained APIs to "export" jar targets
for use by external CMake projects. See the install_jar_exports
and export_jars functions.
CTest now supports test fixtures through the new :prop_test:FIXTURES_SETUP,
:prop_test:FIXTURES_CLEANUP and :prop_test: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 :command:ctest_configure, :command:ctest_build,
:command:ctest_test, :command:ctest_coverage, and :command: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 :manual:ctest(1) process.
CPack gained a :cpack_gen:CPack productbuild Generator on OS X.
CPack gained a new :variable:CPACK_PACKAGE_CHECKSUM variable to
enable generation of a checksum file for each package file.
The :cpack_gen:CPack DEB Generator learned to support long file names
when archive format is set to GNU tar.
See :variable:CPACK_DEBIAN_ARCHIVE_TYPE
The :module:CPackIFW module gained a new
:command:cpack_ifw_add_package_resources command to include additional
resources in the installer binary.
The :module:CPackIFW module :command:cpack_ifw_configure_component and
:command:cpack_ifw_configure_component_group commands gained a new
USER_INTERFACES option to add a list of additional pages to the IFW
installer.
The :cpack_gen:CPack RPM Generator learned to generate debuginfo
packages on demand. See :variable:CPACK_RPM_DEBUGINFO_PACKAGE
and its per component version.
The :cpack_gen:CPack RPM Generator learned to generate source rpm
(SRPM) packages on demand. See :variable:CPACK_RPM_PACKAGE_SOURCES,
:variable:CPACK_RPM_SOURCE_PKG_BUILD_PARAMS and
:variable:CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX.
The :cpack_gen:CPack NSIS Generator now supports
:variable:CPACK_NSIS_<compName>_INSTALL_DIRECTORY.
This can be used to set component specific installation directories.
The :cpack_gen:CPack WIX Generator now supports
:variable:CPACK_WIX_SKIP_PROGRAM_FOLDER to allow specification
of a custom absolute installation prefix outside
of the ProgramFiles folders.
The :cpack_gen:CPack WIX Generator now supports
:variable:CPACK_COMPONENT_<compName>_DISABLED.
This can be used to deselect a component from being installed by default.
The :cpack_gen:CPack WIX Generator now supports
:variable:CPACK_WIX_PATCH_FILE fragments for Feature elements.
The :cpack_gen:CPack WIX Generator now supports
:variable:CPACK_WIX_ROOT_FEATURE_TITLE and
:variable:CPACK_WIX_ROOT_FEATURE_DESCRIPTION to allow the specification
of a custom title and description for the root feature element.
:manual: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 :manual: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 :manual:cmake(1) command learned a --trace-source=<file> option.
:manual:ccmake(1) learned to support vim-like navigation bindings.
:manual:cmake-gui(1) gained a button to open the generated project file
for :ref:Visual Studio Generators and the :generator:Xcode generator.
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:
CMake still supports generating build systems for other projects using these compilers.
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.
.. _Fortran Submodules: https://fortranwiki.org/fortran/show/Submodules
.. _vim-cmake-syntax: https://github.com/pboettch/vim-cmake-syntax