summaryrefslogtreecommitdiffstats
path: root/Help/release/3.6.rst
blob: 7c3764a607048e4f9fc84dfc5e9e07410156c04e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
CMake 3.6 Release Notes
***********************

.. only:: html

  .. contents::

Changes made since CMake 3.5 include the following.

* Support was added for the Bruce C Compiler with compiler id ``Bruce``.

* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
  library.

* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
  files in different directories use ``#include <moc_foo.cpp>`` with the
  same name (because the generated ``moc_foo.cpp`` files would collide).

* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
  :variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
  :ref:`Makefile Generators` and the :generator:`Ninja` generator to run
  ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.

* The :ref:`Makefile Generators` learned to optionally limit dependency
  scanning only to files in the project source and build trees.
  See the :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable.

* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
  indicate when CMake is running on an Oracle Solaris host.

* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
  ``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.

* The "CPackDeb" module learned how to handle ``$ORIGIN``
  in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
  is used for dependency auto detection.

* The :module:`CPackDeb` module learned how to generate ``DEBIAN/shlibs``
  contorl file when package contains shared libraries.

* The :module:`CPackDeb` module learned how to generate ``DEBIAN/postinst`` and
  ``DEBIAN/postrm`` files if the package installs libraries in
  ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).

* The :module:`CPackDeb` module learned how to generate dependencies between
  Debian packages if multi-component setup is used and
  :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
  For backward compatibility this feature is disabled by default. See
  :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.

* The :module:`CPackDeb` module learned how to set custom package file names
  including how to generate properly-named Debian packages::

    <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb

  For backward compatibility this feature is disabled by default. See
  :variable:`CPACK_DEBIAN_FILE_NAME` and
  :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.

* The :module:`CPackDeb` module learned how to set the package release number
  (``DebianRevisionNumber`` in package file name when used in combination with
  ``DEB-DEFAULT`` value set by :variable:`CPACK_DEBIAN_FILE_NAME`).  See
  :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.

* The :module:`CPackDeb` module learned how to set the package architecture
  per-component.  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.

* The :module:`CPackDMG` module learned a new option to tell the CPack
  ``DragNDrop`` generaor to skip the ``/Applications`` symlink.
  See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.

* The :module:`CPackIFW` module gained a new
  :command:`cpack_ifw_update_repository` command to update a QtIFW-specific
  repository from a remote repository.

* The :module:`CPackRPM` module learned how to set RPM ``dist`` tag as part of
  RPM ``Release:`` tag when enabled (mandatory on some Linux distributions for
  e.g. on Fedora).
  See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.

* The "CPackRPM" module learned how to set default values for owning user/group
  and file/directory permissions of package content.
  See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
  :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
  :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
  counterparts.

* The :module:`CPackRPM` module learned how to set user defined package file
  names, how to specify that rpmbuild should decide on file name format as
  well as handling of multiple rpm packages generated by a single user defined
  spec file.
  See :variable:`CPACK_RPM_PACKAGE_NAME` and
  :variable:`CPACK_RPM_<component>_PACKAGE_NAME`.

* The "CPackRPM" module learned how to correctly handle symlinks
  that are pointing outside generated packages.

* The "CPackRPM" module now supports upper cased component name
  in per component CPackRPM specific variables.
  E.g. component named ``foo`` now expects component specific
  variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
  it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
  Upper cased component name part in variables is compatible
  with convention used for other CPack variables.
  For back compatibility old format of variables is still valid
  and preferred if both versions of variable are set, but the
  preferred future use is upper cased component names in variables.
  New variables that will be added to CPackRPM in later versions
  will only support upper cased component variable format.

* The :command:`ctest_update` command now looks at the
  :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
  submodules should be updated or not before updating.
* The :command:`ctest_update` command will now synchronize submodules on an
  update. Updates which add submodules or change a submodule's URL will now be
  pulled properly.

* The :command:`add_custom_command` and :command:`add_custom_target` commands
  learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
  target property.

* The Clang compiler is now supported on CYGWIN.

* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
  See module documentation for an explanation.

* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
  It is intended for use by toolchain files to specify system libraries to be
  added to all linker command lines.

* On Linux and FreeBSD platforms, when building CMake itself from source and
  not using a system-provided libcurl, OpenSSL is now used by default if it is
  found on the system.  This enables SSL/TLS support for commands supporting
  network communication via ``https``, such as :command:`file(DOWNLOAD)`,
  :command:`file(UPLOAD)`, and :command:`ctest_submit`.

* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
  from git repositories.

* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
  ``--target`` options with an error instead of silently ignoring all but the
  last one.

* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
  option to perform a shallow clone of a Git repository.

* The :module:`ExternalProject` module learned to initialize Git submodules
  recursively and also to initialize new submodules on updates.  Use the
  ``GIT_SUBMODULES`` option to restrict which submodules are initalized and
  updated.

* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
  argument to skip extracting the file that is downloaded (e.g., for
  self-extracting shell installers or ``.msi`` files).

* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
  support `OpenBLAS <http://www.openblas.net>`__.

* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
  commands no longer search in installation prefixes derived from the ``PATH``
  environment variable on non-Windows platforms.  This behavior was added in
  CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
  Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
  their tools do not necessarily want any supporting ``<prefix>/lib``
  directories searched.  One may set the ``CMAKE_PREFIX_PATH`` environment
  variable with a :ref:`;-list <CMake Language Lists>` of prefixes that are
  to be searched.

* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.

* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
  CMake to automatically re-run when test sources change so that they
  can be re-scanned.

* The :module:`FindPkgConfig` module learned to optionally create imported
  targets for the libraries it has found.

* The :module:`FindProtobuf` module input and output variables were all renamed
  from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
  Input variables of the old case will be honored if provided, and output
  variables of the old case are always provided.

* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
  variable and check the version number requested in a :command:`find_package`
  call.

* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
  special characters by passing the ``VERBATIM`` option to internal
  :command:`add_custom_command` calls.  This may break clients that
  added escaping manually to work around the bug.

* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
  special characters by passing the ``VERBATIM`` option to internal
  :command:`add_custom_command` calls.  This may break clients that
  added escaping manually to work around the bug.

* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
  to leave installation rules out of the default installation.

* The :module:`InstallRequiredSystemLibraries` module learned a new
  ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
  of the Windows Universal CRT libraries with Visual Studio 2015.

* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
  is now aware of features supported by Intel C++ compilers versions 12.1
  through 16.0 on UNIX platforms.

* The :command:`list` command gained a ``FILTER`` sub-command to filter
  list elements by regular expression.

* The :generator:`Ninja` generator now includes system header files in build
  dependencies to ensure correct re-builds when system packages are updated.

* The :generator:`Ninja` generator learned to produce phony targets
  of the form ``sub/dir/all`` to drive the build of a subdirectory.
  This is equivalent to ``cd sub/dir; make all`` with
  :ref:`Makefile Generators`.

* The :generator:`Ninja` generator learned to read a new
  :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable to configure
  the generated ``build.ninja`` file for use as a ``subninja``.

* The :generator:`Visual Studio 6` generator has been removed.

* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
  removed.

* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
  added for use by toolchain files to specify system include directories
  to be appended to all compiler command lines.

* CTest learned to optionally enforce a secondary timeout after matching
  certain output from a test.  See the :prop_test:`TIMEOUT_AFTER_MATCH` test
  property.

* 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.

* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
  added for use by toolchain files to specify platform-specific
  variables that must be propagated by the :command:`try_compile`
  command into test projects.

* The :command:`try_compile` command learned to check a new
  :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to optionally
  build a static library instead of an executable.  This is useful
  for cross-compiling toolchains that cannot link binaries without
  custom flags or scripts.

* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
  commands gained support for the ``%s`` placeholder.  This is
  the number of seconds since the UNIX Epoch.

* The precompiled OS X binary provided on ``cmake.org`` now requires
  OS X 10.7 or newer.

* The :generator:`Visual Studio 7 .NET 2003` generator is now
  deprecated and will be removed in a future version of CMake.

* The :generator:`Visual Studio 14 2015` generator learned to support the
  Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.

* The :generator:`Visual Studio 9 2008` and :generator:`Visual Studio 8 2005`
  generators learned to generate the remote directory for WinCE project
  deployment and debugger settings.  See the
  :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property.

* The :ref:`Visual Studio Generators` learned to honor a new
  :prop_dir:`VS_STARTUP_PROJECT` directory property that specifies
  the default startup project for generated solutions (``.sln`` files).

* :ref:`Visual Studio Generators` for VS 2010 and above learned a new
  :prop_tgt:`VS_CONFIGURATION_TYPE` target property to specify a custom
  project file type.