CMake 3.5 Release Notes¶
Contents
Changes made since CMake 3.4 include the following.
New Features¶
GUI¶
- The
cmake-gui(1)
gained options to control warnings about deprecated functionality. - The
cmake-gui(1)
learned an option to set the toolset to be used with VS IDE and Xcode generators, much like the existing-T
option tocmake(1)
. - The
cmake-gui(1)
gained a Regular Expression Explorer which may be used to create and evaluate regular expressions in real-time. The explorer window is available via theTools
menu.
Command-Line¶
- The
-Wdev
and-Wno-dev
cmake(1)
options now also enable and suppress the deprecated warnings output by default. - The suppression of developer warnings as errors can now be controlled with
the new
-Werror=dev
and-Wno-error=dev
cmake(1)
options. - The
cmake(1)
-E
command-line toolscopy
,copy_if_different
,copy_directory
, andmake_directory
learned to support multiple input files or directories.
Commands¶
- The
cmake_parse_arguments()
command is now implemented natively. TheCMakeParseArguments
module remains as an empty placeholder for compatibility. - The
install(DIRECTORY)
command learned to supportgenerator expressions
in the list of directories.
Variables¶
- The
CMAKE_ERROR_DEPRECATED
variable can now be set using the-Werror=deprecated
and-Wno-error=deprecated
cmake(1)
options. - The
CMAKE_WARN_DEPRECATED
variable can now be set using the-Wdeprecated
and-Wno-deprecated
cmake(1)
options.
Properties¶
- The
VS_GLOBAL_<variable>
target property is now implemented for VS 2010 and above. Previously it worked only in VS 2008 and below.
Modules¶
- The
ExternalProject
module learned a newGIT_REMOTE_NAME
option to control thegit clone --origin
value. - The
FindBoost
module now provides imported targets such asBoost::boost
andBoost::filesystem
. - The
FindFLEX
moduleFLEX_TARGET
macro learned a newDEFINES_FILE
option to specify a custom output header to be generated. - The
FindGTest
module now provides imported targets. - The
FindGTK2
module, whenGTK2_USE_IMPORTED_TARGETS
is enabled, now setsGTK2_LIBRARIES
to contain the list of imported targets instead of the paths to the libraries. Moreover it now sets a newGTK2_TARGETS
variable containing all the targets imported. - The
FindOpenMP
module learned to support Clang. - The
FindOpenSSL
module gained a newOPENSSL_MSVC_STATIC_RT
option to search for libraries using the MSVC static runtime. - The
FindPNG
module now provides imported targets. - The
FindTIFF
module now provides imported targets. - A
FindXalanC
module was introduced to find the Apache Xalan-C++ XSL transform processing library. - The
FindXercesC
module now provides imported targets.
Platforms¶
- Support was added for the ARM Compiler (arm.com) with compiler id
ARMCC
. - A new platform file for cross-compiling in the Cray Linux Environment to target compute nodes was added. See Cross Compiling for the Cray Linux Environment for usage details.
- The
Compile Features
functionality is now aware of features supported by Clang compilers on Windows (MinGW). - When building for embedded Apple platforms like iOS CMake learned to build and
install combined targets which contain both a device and a simulator build.
This behavior can be enabled by setting the
IOS_INSTALL_COMBINED
target property.
CPack¶
- The
CPack DragNDrop Generator
learned new variable to specify AppleScript file run to customize appearance ofDragNDrop
installer folder, including background image setting using supplied PNG or multi-resolution TIFF file. See theCPACK_DMG_DS_STORE_SETUP_SCRIPT
andCPACK_DMG_BACKGROUND_IMAGE
variables. - The
CPack DEB Generator
learned to set the optional config fileSource
field using a monolithic or per-component variable. SeeCPACK_DEBIAN_PACKAGE_SOURCE
. - The
CPack DEB Generator
learned to set Package, Section and Priority control fields per-component. See variablesCPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION
andCPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY
. - The
CPack DragNDrop Generator
learned to add multi-lingual SLAs to a DMG which is presented to the user when they try to mount the DMG. See theCPACK_DMG_SLA_LANGUAGES
andCPACK_DMG_SLA_DIR
variables for details. - The
CPack NSIS Generator
learned new variables to add bitmaps to the installer. See theCPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP
andCPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP
variables. - The
CPack RPM Generator
learned to set Name and Group control fields per-component. SeeCPACK_RPM_<component>_PACKAGE_NAME
andCPACK_RPM_<component>_PACKAGE_GROUP
.
Other¶
- Warnings about deprecated functionality are now enabled by default.
They may be suppressed with
-Wno-deprecated
or by setting theCMAKE_WARN_DEPRECATED
variable to false.
Deprecated and Removed Features¶
- The
cmake(1)
-E time
command now properly passes arguments with spaces or special characters through to the child process. This may break scripts that worked around the bug with their own extra quoting or escaping. - The
Xcode
generator was fixed to escape backslashes in strings consistently with other generators. Projects that previously worked around the inconsistecy with an extra level of backslashes conditioned on the Xcode generator must be updated to remove the workaround for CMake 3.5 and greater.
Other Changes¶
- The
Visual Studio 14 2015
generator learned to map the/debug:fastlink
linker flag to the.vcxproj
file property. - The
FindGTK2
module now configures theGTK2::sigc++
imported target to enable c++11 on its dependents when using sigc++ 2.5.1 or higher. - The precompiled Windows binary provided on
cmake.org
is now a.msi
package instead of an installer executable. One may need to manually uninstall CMake versions lower than 3.5 before installing the new package.