summaryrefslogtreecommitdiffstats
path: root/Help/release/3.22.rst
blob: d8427a672da1fac57d32305078d078fc00024888 (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
CMake 3.22 Release Notes
************************

.. only:: html

  .. contents::

Changes made since CMake 3.21 include the following.

* The :module:`CMakeDependentOption` module :command:`cmake_dependent_option`
  macro now supports full :ref:`Condition Syntax`.
  See policy :policy:`CMP0127`.

* The :envvar:`CMAKE_INSTALL_MODE` environment variable was added to
  allow users to override the default file-copying behavior of
  :command:`install` and :command:`file(INSTALL)` into creating
  symbolic links. This can aid in lowering storage space requirements
  and avoiding redundancy.

* The :command:`file(INSTALL)` can now be affected / modified by the
  :envvar:`CMAKE_INSTALL_MODE` environment variable causing installation
  of symbolic links instead of copying of files.

* The :command:`install` can now be affected / modified by the
  :envvar:`CMAKE_INSTALL_MODE` environment variable causing installation
  of symbolic links instead of copying of files.

* The :manual:`Compile Features <cmake-compile-features(7)>` functionality now
  correctly disables or enables compiler extensions when no standard level is
  specified and avoids unnecessarily adding language standard flags if the
  requested settings match the compiler's defaults. See :policy:`CMP0128`.

* :prop_tgt:`<LANG>_EXTENSIONS` is initialized to
  :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`. See :policy:`CMP0128`.

* The :cpack_gen:`CPack DEB Generator` gained the
  option to set :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` to zstd,
  which enables Zstandard compression for deb packages.

* The :cpack_gen:`CPack RPM Generator` gained the
  :variable:`CPACK_RPM_REQUIRES_EXCLUDE_FROM` option avoid scanning
  specific paths for dependencies.

* :manual:`ctest(1)` learned to be able to modify the environment for a test
  through the :prop_test:`ENVIRONMENT_MODIFICATION` property. This is allows
  for updates to environment variables based on the environment present at
  test time.

* The :command:`ctest_memcheck` command now also generates a
  `DynamicAnalysis-Test.xml` file which may be used to submit test results to
  CDash.

* :manual:`ctest(1)` learned to recognize labels attached to a test at run time.
  Previously it was only possible to attach labels to tests at configure time
  by using the :prop_test:`LABELS` test property.
  See :ref:`Additional Test Measurements` for more information.

* The :envvar:`CMAKE_BUILD_TYPE` environment variable was added to
  provide a default value for the :variable:`CMAKE_BUILD_TYPE` variable.

* The :envvar:`CMAKE_CONFIGURATION_TYPES` environment variable was added to
  provide a default value for the :variable:`CMAKE_CONFIGURATION_TYPES`
  variable.

* The :module:`FetchContent` module now passes through the
  :variable:`CMAKE_TLS_VERIFY`, :variable:`CMAKE_TLS_CAINFO`,
  :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables (when
  defined) to the underlying :module:`ExternalProject` sub-build.
  Previously, those variables were silently ignored by :module:`FetchContent`.

* The :module:`FindBLAS` and :module:`FindLAPACK` modules gained
  a ``BLA_SIZEOF_INTEGER`` option to find a BLAS/LAPACK whose ABI
  uses a specific integer size.

* The :module:`FindJasper` module now provides an imported target.

* The :module:`FindMatlab` module now provides imported targets.

* The :variable:`CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` variable was added
  to turn a non-REQUIRED :command:`find_package` call into a REQUIRED one.

* The :module:`FindPkgConfig` module gained a :variable:`PKG_CONFIG_ARGN`
  variable to specify arguments to ``pkg-config`` calls.

* The :module:`GoogleTest` module :command:`gtest_discover_tests`
  function gained a ``TEST_FILTER`` option to filter tests using
  ``--gtest_filter`` during test discovery.

* Configuration for :prop_tgt:`LINK_WHAT_YOU_USE` feature is now controlled by
  ``CMake`` variables and only active for ``ELF`` platforms.

* The MSVC compilers learned to pass the ``-external:I`` flag for system
  includes when using the :generator:`Ninja` and :generator:`NMake Makefiles`
  generators. This became available as of Visual Studio 16.10 (toolchain
  version 14.29.30037).

* The :ref:`Ninja Generators` now implement the ``edit_cache`` target
  using :manual:`ccmake(1)` if available.

* The :cpack_gen:`CPack NSIS Generator` gained a new variable
  :variable:`CPACK_NSIS_IGNORE_LICENSE_PAGE` to ignore the
  license page in the installer.

* The :cpack_gen:`CPack NSIS Generator` now requires NSIS 3.03 or later.

* The :command:`cmake_host_system_information` command query operating system
  identification `variables <https://www.freedesktop.org/software/systemd/man/os-release.html>`_
  from the :file:`/etc/os-release` file.

* The :command:`string(TIMESTAMP)` command now supports the ``%V``
  specifier for ISO 8601 week numbers.

* :command:`target_compile_features` learned to ignored features for languages that
  aren't enabled.

* :module:`UseSWIG` module gained the capability, for
  :ref:`Visual Studio Generators` to use `swig` tool to generate implicit
  dependencies.

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

* The :prop_sf:`VS_SETTINGS` source file property is now supported for
  all source file types.  Previously it worked only for non-built sources.