1CMake 3.5 Release Notes
2***********************
3
4.. only:: html
5
6  .. contents::
7
8Changes made since CMake 3.4 include the following.
9
10New Features
11============
12
13GUI
14---
15
16* The :manual:`cmake-gui(1)` gained options to control warnings about
17  deprecated functionality.
18
19* The :manual:`cmake-gui(1)` learned an option to set the toolset
20  to be used with VS IDE and Xcode generators, much like the
21  existing ``-T`` option to :manual:`cmake(1)`.
22
23* The :manual:`cmake-gui(1)` gained a Regular Expression Explorer which
24  may be used to create and evaluate regular expressions in real-time.
25  The explorer window is available via the ``Tools`` menu.
26
27Command-Line
28------------
29
30* The ``-Wdev`` and ``-Wno-dev`` :manual:`cmake(1)` options now also enable
31  and suppress the deprecated warnings output by default.
32
33* The suppression of developer warnings as errors can now be controlled with
34  the new ``-Werror=dev`` and ``-Wno-error=dev`` :manual:`cmake(1)` options.
35
36* The :manual:`cmake(1)` ``-E`` command-line tools ``copy``,
37  ``copy_if_different``, ``copy_directory``, and ``make_directory``
38  learned to support multiple input files or directories.
39
40Commands
41--------
42
43* The :command:`cmake_parse_arguments` command is now implemented natively.
44  The :module:`CMakeParseArguments` module remains as an empty placeholder
45  for compatibility.
46
47* The :command:`install(DIRECTORY)` command learned to support
48  :manual:`generator expressions <cmake-generator-expressions(7)>`
49  in the list of directories.
50
51Variables
52---------
53
54* The :variable:`CMAKE_ERROR_DEPRECATED` variable can now be set using the
55  ``-Werror=deprecated`` and ``-Wno-error=deprecated`` :manual:`cmake(1)`
56  options.
57
58* The :variable:`CMAKE_WARN_DEPRECATED` variable can now be set using the
59  ``-Wdeprecated`` and ``-Wno-deprecated`` :manual:`cmake(1)` options.
60
61Properties
62----------
63
64* The :prop_tgt:`VS_GLOBAL_<variable>` target property is now implemented
65  for VS 2010 and above.  Previously it worked only in VS 2008 and below.
66
67Modules
68-------
69
70* The :module:`ExternalProject` module learned a new ``GIT_REMOTE_NAME``
71  option to control the ``git clone --origin`` value.
72
73* The :module:`FindBoost` module now provides imported targets
74  such as ``Boost::boost`` and ``Boost::filesystem``.
75
76* The :module:`FindFLEX` module ``FLEX_TARGET`` macro learned a
77  new ``DEFINES_FILE`` option to specify a custom output header
78  to be generated.
79
80* The :module:`FindGTest` module now provides imported targets.
81
82* The :module:`FindGTK2` module, when ``GTK2_USE_IMPORTED_TARGETS`` is
83  enabled, now sets ``GTK2_LIBRARIES`` to contain the list of imported
84  targets instead of the paths to the libraries.  Moreover it now sets
85  a new ``GTK2_TARGETS`` variable containing all the targets imported.
86
87* The :module:`FindOpenMP` module learned to support Clang.
88
89* The :module:`FindOpenSSL` module gained a new
90  ``OPENSSL_MSVC_STATIC_RT`` option to search for libraries using
91  the MSVC static runtime.
92
93* The :module:`FindPNG` module now provides imported targets.
94
95* The :module:`FindTIFF` module now provides imported targets.
96
97* A :module:`FindXalanC` module was introduced to find the
98  Apache Xalan-C++ XSL transform processing library.
99
100* The :module:`FindXercesC` module now provides imported targets.
101
102Platforms
103---------
104
105* Support was added for the ARM Compiler (arm.com) with compiler id ``ARMCC``.
106
107* A new platform file for cross-compiling in the Cray Linux Environment to
108  target compute nodes was added.  See
109  :ref:`Cross Compiling for the Cray Linux Environment <Cray Cross-Compile>`
110  for usage details.
111
112* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
113  is now aware of features supported by Clang compilers on Windows (MinGW).
114
115* When building for embedded Apple platforms like iOS CMake learned to build and
116  install combined targets which contain both a device and a simulator build.
117  This behavior can be enabled by setting the :prop_tgt:`IOS_INSTALL_COMBINED`
118  target property.
119
120CPack
121-----
122
123* The :cpack_gen:`CPack DragNDrop Generator` learned new variable to
124  specify AppleScript file run to customize appearance of ``DragNDrop``
125  installer folder, including background image setting using supplied
126  PNG or multi-resolution TIFF file.
127  See the :variable:`CPACK_DMG_DS_STORE_SETUP_SCRIPT` and
128  :variable:`CPACK_DMG_BACKGROUND_IMAGE` variables.
129
130* The :cpack_gen:`CPack DEB Generator` learned to set the optional config
131  file ``Source`` field using a monolithic or per-component variable.
132  See :variable:`CPACK_DEBIAN_PACKAGE_SOURCE`.
133
134* The :cpack_gen:`CPack DEB Generator` learned to set Package, Section
135  and Priority control fields per-component.
136  See variables :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION` and
137  :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY`.
138
139* The :cpack_gen:`CPack DragNDrop Generator` learned to add
140  multi-lingual SLAs to a DMG which is presented to the user when they try to
141  mount the DMG.  See the :variable:`CPACK_DMG_SLA_LANGUAGES` and
142  :variable:`CPACK_DMG_SLA_DIR` variables for details.
143
144* The :cpack_gen:`CPack NSIS Generator` learned new variables to
145  add bitmaps to the installer.
146  See the :variable:`CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP`
147  and :variable:`CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP` variables.
148
149* The :cpack_gen:`CPack RPM Generator` learned to set Name and Group
150  control fields per-component.
151  See :variable:`CPACK_RPM_<component>_PACKAGE_NAME`
152  and :variable:`CPACK_RPM_<component>_PACKAGE_GROUP`.
153
154Other
155-----
156
157* Warnings about deprecated functionality are now enabled by default.
158  They may be suppressed with ``-Wno-deprecated`` or by setting the
159  :variable:`CMAKE_WARN_DEPRECATED` variable to false.
160
161Deprecated and Removed Features
162===============================
163
164* The :manual:`cmake(1)` ``-E time`` command now properly passes arguments
165  with spaces or special characters through to the child process.  This
166  may break scripts that worked around the bug with their own extra
167  quoting or escaping.
168
169* The :generator:`Xcode` generator was fixed to escape backslashes in
170  strings consistently with other generators.  Projects that previously
171  worked around the inconsistecy with an extra level of backslashes
172  conditioned on the Xcode generator must be updated to remove the
173  workaround for CMake 3.5 and greater.
174
175Other Changes
176=============
177
178* The :generator:`Visual Studio 14 2015` generator learned to map the
179  ``/debug:fastlink`` linker flag to the ``.vcxproj`` file property.
180
181* The :module:`FindGTK2` module now configures the ``GTK2::sigc++`` imported
182  target to enable c++11 on its dependents when using sigc++ 2.5.1 or higher.
183
184* The precompiled Windows binary provided on ``cmake.org`` is now a
185  ``.msi`` package instead of an installer executable.  One may need
186  to manually uninstall CMake versions lower than 3.5 before installing
187  the new package.
188