summaryrefslogtreecommitdiffstats
path: root/Help/release/3.25.rst
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-10-07 15:26:34 (GMT)
committerBrad King <brad.king@kitware.com>2022-10-07 15:26:41 (GMT)
commitf93f97d6c297dca87aceab91f6b5cc6cea10b1e1 (patch)
treeec4765472c984be9a18c85f36500927a3a1ed7c5 /Help/release/3.25.rst
parentc174ef23f4993f520a61918b812f3c6992a54825 (diff)
downloadCMake-f93f97d6c297dca87aceab91f6b5cc6cea10b1e1.zip
CMake-f93f97d6c297dca87aceab91f6b5cc6cea10b1e1.tar.gz
CMake-f93f97d6c297dca87aceab91f6b5cc6cea10b1e1.tar.bz2
Help: Organize and revise 3.25 release notes
Add section headers similar to the 3.24 release notes and move each individual bullet into an appropriate section. Revise a few bullets. Drop the `UseSWIG` bullet, as it is a simple bug fix. Drop the `LINK_LIBRARY` bullet, as it just polishes an existing feature, and has a corresponding `versionadded` mark anyway.
Diffstat (limited to 'Help/release/3.25.rst')
-rw-r--r--Help/release/3.25.rst286
1 files changed, 161 insertions, 125 deletions
diff --git a/Help/release/3.25.rst b/Help/release/3.25.rst
index 6bce413..2250dd4 100644
--- a/Help/release/3.25.rst
+++ b/Help/release/3.25.rst
@@ -7,194 +7,230 @@ CMake 3.25 Release Notes
Changes made since CMake 3.24 include the following.
- * Support for the `Tasking compiler toolsets`_ (SmartCode, TriCore,
- Standalone: ARM, MCS, 8051) was added with compiler id ``Tasking``.
- See the :variable:`CMAKE_TASKING_TOOLSET` variable.
+New Features
+============
-.. _`Tasking compiler toolsets`: https://tasking.com
-
-* CMake language gains the commands :command:`block` and :command:`endblock` to
- manage specific scopes (policy or variable) for group of commands.
-
-* The :variable:`BSD` variable is set to a string value when the target system is BSD.
- This value can be one of the following: DragonFlyBSD, FreeBSD, OpenBSD, or NetBSD.
-
-* The :variable:`CMAKE_HOST_BSD` variable is set to a string value when the host system is BSD.
- This value can be one of the following: DragonFlyBSD, FreeBSD, OpenBSD, or NetBSD.
-
-* If :prop_tgt:`<LANG>_CLANG_TIDY` includes a ``-p`` argument, the
- full compiler command line is no longer appended after ``--``.
-
-* A new ``--modify`` flag was added to :option:`cmake -E env <cmake-E env>` to
- support :prop_test:`ENVIRONMENT_MODIFICATION` operations.
-
-* The :command:`cmake_language` command gained a new
- ``GET_MESSAGE_LOG_LEVEL`` sub-command. It can be used to
- query the current message logging level.
+Presets
+-------
* The :manual:`cmake-presets(7)` schema version has been bumped to ``6``.
-* The :manual:`cmake-presets(7)` format now supports a ``packagePresets`` field.
-* The :manual:`cmake-presets(7)` format now supports a ``workflowPresets`` field.
+* The :manual:`cmake-presets(7)` format now supports a
+ ``packagePresets`` field to specify presets for :option:`cpack --preset`.
-* The :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property now supports
- :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-* The :cpack_gen:`CPack Archive Generator` gained a new
- :variable:`CPACK_ARCHIVE_FILE_EXTENSION` variable to control
- the package file name extension.
+* The :manual:`cmake-presets(7)` format now supports a
+ ``workflowPresets`` field to specify presets for :option:`cmake --workflow`.
-* The :cpack_gen:`CPack NSIS Generator` gained two new variables
- :variable:`CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS` and
- :variable:`CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS`
- to provide arguments to the nsis executable invocation.
+Languages
+---------
-* The :module:`CPack` module gained the :variable:`CPACK_READELF_EXECUTABLE`,
- :variable:`CPACK_OBJCOPY_EXECUTABLE`, and
- :variable:`CPACK_OBJDUMP_EXECUTABLE` variables to control the locations
- of binutils used by :manual:`cpack(1)`.
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+ is now aware of C++26, and defines a ``cxx_std_26`` meta-feature.
+ C++26 compiler modes may also be specified via the :prop_tgt:`CXX_STANDARD`,
+ :prop_tgt:`CUDA_STANDARD`, :prop_tgt:`HIP_STANDARD`,
+ or :prop_tgt:`OBJCXX_STANDARD` target properties.
-* ``CUDA`` language now supports device link time optimization when using
- ``nvcc``. The :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable and
- the associated :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property will
- activate device LTO.
+* ``CUDA`` language support now includes device link-time optimization when
+ using ``nvcc``. The :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable
+ and the associated :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property
+ will activate device LTO.
-* C++26 compiler modes may now be specified via the :prop_tgt:`CXX_STANDARD`,
- :prop_tgt:`CUDA_STANDARD`, :prop_tgt:`HIP_STANDARD`, or
- :prop_tgt:`OBJCXX_STANDARD` target properties,
- or via the :manual:`Compile Features <cmake-compile-features(7)>`
- functionality's ``cxx_std_26`` meta-feature.
+Command-Line
+------------
-* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
- now accepts ``.a`` file names after first considering ``.lib``. This is
- symmetric with existing behavior when targeting the GNU ABI, in which the
- command accepts ``.lib`` file names after first considering ``.a``.
+* A :ref:`cmake --workflow --preset <Workflow Mode>` mode was added
+ to drive sequences of configure, build, test, and package operations
+ through a single command.
-* The :manual:`cmake -E capabilities <cmake(1)>` command gained a new ``tls``
- field that tells whether or not TLS is enabled.
+* The :option:`cmake -E capabilities <cmake-E capabilities>` command
+ gained a new ``tls`` field that tells whether or not TLS is enabled.
-* The :envvar:`SSL_CERT_FILE` and :envvar:`SSL_CERT_DIR` environment
- variables are now used to find certificate authorities for TLS/SSL
+* The :option:`cmake -E env <cmake-E env>` command-line tool gained
+ a ``--modify`` flag to support :prop_test:`ENVIRONMENT_MODIFICATION`
operations.
-* The :module:`FindCUDAToolkit` module now provides a target for
- :ref:`nvtx3 <cuda_toolkit_nvtx3>` for CUDA 10.0+, which supersedes
- :ref:`nvToolsExt <cuda_toolkit_nvToolsExt>`. A deprecation warning is emitted
- when using ``nvToolsExt`` if the project requires CMake 3.25 and CUDA 10.0+
- is used.
+* The :option:`cmake --debug-trycompile` option now prints log messages
+ reporting the directory in which each try-compile check is done.
-* The :module:`FindDoxygen` module now evaluates as many candidate
- Doxygen installs as are necessary to satisfy version constraints,
- with the package considered to be not found if none are available.
+Compilers
+---------
-* The :module:`FindDoxygen` module now handles version ranges.
+* Support for the `Tasking compiler toolsets`_ (SmartCode, TriCore,
+ Standalone: ARM, MCS, 8051) was added with compiler id ``Tasking``.
+ See the :variable:`CMAKE_TASKING_TOOLSET` variable.
-* The :module:`FindDoxygen` module now ignores non-semantic portions
- of the output from Doxygen's `--version` option.
+.. _`Tasking compiler toolsets`: https://tasking.com
-* :command:`find_file`, :command:`find_path`, :command:`find_library`, and
- :command:`find_program` commands gain the capability to specify a function
- which will be called for each found item to validate it.
+Commands
+--------
-* The :module:`FindOpenAL` module now provides an imported target.
+* The :command:`add_subdirectory` command gained a ``SYSTEM`` option
+ to enable the :prop_dir:`SYSTEM` directory property in the subdirectory.
-* The :module:`FindOpenSP` module was added to find the OpenSP library.
+* The :command:`block` and :command:`endblock` commands were added to manage
+ specific scopes (policy or variable) for a contained block of commands.
+
+* The :command:`cmake_language` command gained a new
+ ``GET_MESSAGE_LOG_LEVEL`` sub-command. It can be used to
+ query the current message logging level.
+
+* The :command:`find_file`, :command:`find_path`, :command:`find_library`, and
+ :command:`find_program` commands gained a ``VALIDATOR`` option to specify a
+ function to be called for each candidate item to validate it.
* The :command:`find_package` command now considers paths of
the form ``<prefix>/<name>*/(cmake|CMake)/<name>*/`` when
searching for package configuration files.
-* The :module:`FindVulkan` module gained support for a DirectX Shader Compiler
- component, ``dxc``.
+* The :command:`return` command gained a ``PROPAGATE`` option to propagate
+ variables to the scope to which control returns.
+ See policy :policy:`CMP0140`.
-* The :module:`FindVulkan` module now includes a ``volk`` component
- for the Volk open source vulkan meta-loader.
+* The :command:`try_compile` and :command:`try_run` commands gained new
+ signatures that more consistently use keyword dispatch and do not require a
+ binary directory to be specified. Additionally, these signatures use a
+ unique directory for each invocation, which allows multiple outputs to be
+ preserved when using :option:`cmake --debug-trycompile`.
+
+* The :command:`try_compile` and :command:`try_run` commands gained the
+ option ``NO_CACHE`` to store results in normal variables.
+
+* The :command:`try_run` command gained ``RUN_OUTPUT_STDOUT_VARIABLE``
+ and ``RUN_OUTPUT_STDERR_VARIABLE`` options to capture stdout and stderr
+ separately from the output of the compiled program.
-The :genex:`$<LINK_LIBRARY>` generator expression gains the capability, for the
-``FRAMEWORK`` features, to handle the suffix of the framework library name.
+Variables
+---------
-* The :variable:`LINUX` variable is set to true when the target system is Linux.
+* The :variable:`BSD` and :variable:`CMAKE_HOST_BSD` variables are now set
+ to a string value when the target or host system is BSD, respectively.
-* The :variable:`CMAKE_HOST_LINUX` variable is set to true when the host system is Linux.
+* The :variable:`LINUX` and :variable:`CMAKE_HOST_LINUX` variables are
+ now set to true when the target or host system is Linux, respectively.
* The :variable:`CMAKE_MSVC_DEBUG_INFORMATION_FORMAT` variable and
:prop_tgt:`MSVC_DEBUG_INFORMATION_FORMAT` target property were introduced
to select the debug information format for compilers targeting the MSVC ABI.
See policy :policy:`CMP0141`.
-* C++ module scanning now supports the latest revision, `P1689R5`_.
+* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` variable and
+ corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` target
+ property were added to tell the :generator:`Xcode` generator what to put
+ in the scheme's ``Metal: API Validation`` setting.
-.. _`P1689r5`: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1689r5.html
+* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` variable and
+ corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` target
+ property were added to tell the :generator:`Xcode` generator what to put
+ in the scheme's ``Metal: Shader Validation`` setting.
-* The :generator:`Visual Studio 10 2010` generator has been removed.
+* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_MODE` variable and corresponding
+ :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE` target property were added to tell
+ the :generator:`Xcode` generator what to put in the scheme's "Launch"
+ mode setting.
+
+* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION` variable and
+ corresponding :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION` target
+ property were added to tell the :generator:`Xcode` generator what
+ configuration to put in the scheme's Launch action.
-* The :command:`return` command gains the capability to propagate variables to
- the include directory of function caller scope. See policy :policy:`CMP0140`.
+Properties
+----------
+
+* The :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property now supports
+ :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`EXPORT_NO_SYSTEM` target property was added to
+ specify that :command:`install(EXPORT)` and :command:`export`
+ commands will generate na imported target with
+ :prop_tgt:`SYSTEM` property ``OFF``.
* The :prop_tgt:`SYSTEM` target property was added to specify
- that a target should be treated as a system library (i.e.
+ whether a target should be treated as a system library (i.e.
its include directories are automatically ``SYSTEM`` when
- compiling consumers).
+ compiling consumers). If not set, the default is the previous
+ behavior: on for imported targets and off for other targets.
* The :prop_dir:`SYSTEM` directory property was added to initialize the
:prop_tgt:`SYSTEM` target property for targets created in that directory.
-* The :command:`add_subdirectory` command gained a ``SYSTEM`` option
- to enable the :prop_dir:`SYSTEM` directory property in the subdirectory.
+Modules
+-------
* The :module:`FetchContent` module :command:`FetchContent_Declare`
command gained a ``SYSTEM`` option to enable the :prop_dir:`SYSTEM`
directory property in the subdirectory.
-* The :prop_tgt:`EXPORT_NO_SYSTEM` target property was added to
- specify that :command:`install(EXPORT)` and :command:`export`
- commands will generate a imported target with
- :prop_tgt:`SYSTEM` property `OFF`.
+* The :module:`FindCUDAToolkit` module now provides a target for
+ :ref:`nvtx3 <cuda_toolkit_nvtx3>` for CUDA 10.0+, which supersedes
+ :ref:`nvToolsExt <cuda_toolkit_nvToolsExt>`. A deprecation warning
+ is emitted when using ``nvToolsExt`` if the project requires CMake
+ 3.25 and CUDA 10.0+ is used.
-* The :prop_tgt:`IMPORTED_NO_SYSTEM` target property was deprecated
- in favor of :prop_tgt:`SYSTEM` and :prop_tgt:`EXPORT_NO_SYSTEM`.
+* The :module:`FindDoxygen` module's version handling has been improved:
-* The :command:`try_compile` and :command:`try_run` commands gained the option
- ``NO_CACHE`` to store results in normal variables.
+ * Multiple candidate installations will now be considered, if needed,
+ to satisfy version constraints. Previously, only the first one
+ encountered would be considered.
-* The :command:`try_compile` and :command:`try_run` commands gained new
- signatures that more consistently use keyword dispatch and do not require a
- binary directory to be specified. Additionally, these signatures use a
- unique directory for each invocation, which allows multiple outputs to be
- preserved when using :option:`--debug-trycompile <cmake --debug-trycompile>`.
+ * Version ranges are supported.
-* The :option:`cmake --debug-trycompile` option now prints log messages
- reporting the directory in which each try-compile check is done.
+ * Variations in the version format reported by Doxygen are now
+ tolerated (e.g. a trailing git commit hash).
-* The :command:`try_run` command gained ``RUN_OUTPUT_STDOUT_VARIABLE``
- and ``RUN_OUTPUT_STDERR_VARIABLE`` options to capture stdout and stderr
- separately from the output of the compiled program.
+* The :module:`FindOpenAL` module now provides an imported target.
+
+* The :module:`FindOpenSP` module was added to find the OpenSP library.
+
+* The :module:`FindVulkan` module gained support for new components:
-* The :module:`UseSWIG` module gained knowledge about generated Perl module
- files (extension ``.pm``).
+ ``dxc``
+ DirectX Shader Compiler.
+
+ ``volk``
+ Volk open-source vulkan meta-loader.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack Archive Generator` gained a new
+ :variable:`CPACK_ARCHIVE_FILE_EXTENSION` variable to control
+ the package file name extension.
+
+* The :cpack_gen:`CPack NSIS Generator` gained two new variables
+ :variable:`CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS` and
+ :variable:`CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS`
+ to provide arguments to the nsis executable invocation.
+
+* The :module:`CPack` module gained the :variable:`CPACK_READELF_EXECUTABLE`,
+ :variable:`CPACK_OBJCOPY_EXECUTABLE`, and
+ :variable:`CPACK_OBJDUMP_EXECUTABLE` variables to control the locations
+ of binutils used by :manual:`cpack(1)`.
+
+Deprecated and Removed Features
+===============================
+
+* The :prop_tgt:`IMPORTED_NO_SYSTEM` target property has been deprecated
+ in favor of :prop_tgt:`SYSTEM` and :prop_tgt:`EXPORT_NO_SYSTEM`.
+
+* The :generator:`Visual Studio 10 2010` generator has been removed.
* The :generator:`Visual Studio 11 2012` generator is now deprecated
and will be removed in a future version of CMake.
-* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` variable and
- corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` target
- property were added to tell the :generator:`Xcode` generator what to put
- in the scheme's ``Metal: API Validation`` setting.
+Other Changes
+=============
-* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` variable and
- corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` target
- property were added to tell the :generator:`Xcode` generator what to put
- in the scheme's ``Metal: Shader Validation`` setting.
+* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
+ now accepts ``.a`` file names after first considering ``.lib``. This is
+ symmetric with existing behavior when targeting the GNU ABI, in which the
+ command accepts ``.lib`` file names after first considering ``.a``.
-* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_MODE` variable and corresponding
- :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE` target property were added to tell
- the :generator:`Xcode` generator what to put in the scheme's "Launch"
- mode setting.
+* The :envvar:`SSL_CERT_FILE` and :envvar:`SSL_CERT_DIR` environment
+ variables can now be used to override where to find certificate
+ authorities for TLS/SSL operations.
-* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION` variable and
- corresponding :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION` target
- property were added to tell the :generator:`Xcode` generator what
- configuration to put in the scheme's Launch action.
+* If :prop_tgt:`<LANG>_CLANG_TIDY` includes a ``-p`` argument, the
+ full compiler command line is no longer appended after ``--``.
* The :generator:`Xcode` generator no longer adds the per-config suffix
``$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)`` to library search paths.