Help: Consolidate 4.1 release notes

Run the `Utilities/Release/consolidate-relnotes.bash` script to move
notes from `Help/release/dev/*` into `Help/release/$ver.rst`.
This commit is contained in:
Brad King
2025-06-12 14:54:05 -04:00
parent 68eb6fb683
commit f841c65b53
37 changed files with 170 additions and 231 deletions

169
Help/release/4.1.rst Normal file
View File

@@ -0,0 +1,169 @@
CMake 4.1 Release Notes
***********************
.. only:: html
.. contents::
Changes made since CMake 4.0 include the following.
* The :command:`add_dependencies` command may be called with no dependencies.
* Enabling ``ASM`` no longer accidentally succeeds using ``MSVC``'s ``cl``
C compiler as an assembler. See policy :policy:`CMP0194`.
* The :prop_tgt:`AUTOMOC_INCLUDE_DIRECTORIES` target property and associated
:variable:`CMAKE_AUTOMOC_INCLUDE_DIRECTORIES` variable were added to
override the automatic discovery of moc includes from a target's transitive
include directories.
* The :variable:`CMAKE_FIND_REQUIRED` variable was added to tell
:command:`find_package`, :command:`find_path`, :command:`find_file`,
:command:`find_library`, and :command:`find_program` to be ``REQUIRED``
by default. The commands also gained an ``OPTIONAL`` keyword to ignore
the variable for a specific call.
* The :command:`cmake_pkg_config` command now supports the ``IMPORT`` and
``POPULATE`` subcommands for interfacing CMake targets with pkg-config based
dependencies.
* The :variable:`CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID` variable is now
populated for most compilers, and documented for public use.
* The :ref:`find configure-log event` ``find-v1`` has been added to
:manual:`cmake-configure-log(7)` to track calls to the :command:`find_file`,
:command:`find_path`, :command:`find_library`, and :command:`find_program`
commands.
* The :cpack_gen:`CPack NuGet Generator` gained option
:variable:`CPACK_NUGET_SYMBOL_PACKAGE` to generate NuGet
symbol packages containing PDB files.
* The :cpack_gen:`CPack RPM Generator` gained
:variable:`CPACK_RPM_PACKAGE_ENHANCES`,
:variable:`CPACK_RPM_PACKAGE_RECOMMENDS`, and
:variable:`CPACK_RPM_PACKAGE_SUPPLEMENTS`
variables to specify the corresponding RPM spec fields.
* :manual:`ctest(1)` gained a
:option:`--schedule-random-seed <ctest --schedule-random-seed>`
option to specify a numeric random seed to make
:option:`ctest --schedule-random` deterministic for reproduction.
* `Diab compilers from Wind River Systems`_, versions 5.9.x+, are now
supported with :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``Diab``
for languages ``ASM``, ``C``, and ``CXX``.
.. _`Diab compilers from Wind River Systems`: https://www.windriver.com/resource/wind-river-diab-compiler-product-overview
* The :module:`ExternalProject` module no longer checks the ``URL`` archive
file extension. Any archive type that :option:`cmake -E tar <cmake-E tar>`
can extract is now allowed.
* The :manual:`cmake-file-api(7)` :ref:`v1 <file-api v1>` now writes
partial replies when buildsystem generation fails with an error.
See the :ref:`v1 Reply Error Index <file-api reply error index>`.
* The :module:`FindASPELL` module now provides version variable, imported
targets, and components to optionally select Aspell library and executable
separately.
* The :module:`FindGTest` module's result variables ``GTEST_INCLUDE_DIRS``,
``GTEST_LIBRARIES``, ``GTEST_MAIN_LIBRARIES``, and ``GTEST_BOTH_LIBRARIES``
are now deprecated in favor of using ``GTest::gtest`` and
``GTest::gtest_main`` imported targets.
* The :module:`FindProtobuf` module's :command:`protobuf_generate(DEPENDENCIES)`
command argument now accepts multiple values.
* The :module:`FindProtobuf` module's commands :command:`protobuf_generate_cpp`
and :command:`protobuf_generate_python` together with their hint variables
``Protobuf_IMPORT_DIRS`` and ``PROTOBUF_GENERATE_CPP_APPEND_PATH`` are now
deprecated in favor of :command:`protobuf_generate`.
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
enforce consistency of artifacts in cross-compiling mode. This prevent mixing
host and target artifacts. See policy :policy:`CMP0190` for more information.
* The :genex:`TARGET_PROPERTY` generator expression now evaluates the
:prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
target properties transitively. See policy :policy:`CMP0189`.
* The :module:`GNUInstallDirs` module now prefers to default
``SYSCONFDIR``, ``LOCALSTATEDIR``, and ``RUNSTATEDIR`` to
absolute paths when installing to special prefixes.
See policy :policy:`CMP0192`.
* The :module:`GNUInstallDirs` module now caches ``CMAKE_INSTALL_*``
variables with their leading ``usr/`` for install prefix ``/``.
See policy :policy:`CMP0193`.
* The :variable:`CMAKE_<LANG>_ICSTAT` variable and corresponding
:prop_tgt:`<LANG>_ICSTAT` target property were added to tell
the :ref:`Makefile Generators` and the :ref:`Ninja Generators`
to run the IAR ``icstat`` tool along with the compiler for
``C`` and ``CXX`` languages.
* The :manual:`cmake-configure-log(7)` will report events from ``find_``
commands without any find-debug flags (e.g.,
:variable:`CMAKE_FIND_DEBUG_MODE`) when they transition between "found" and
"not found" or when they are first defined. The
:variable:`CMAKE_FIND_DEBUG_MODE_NO_IMPLICIT_CONFIGURE_LOG` variable will
suppress these events without any explicit request for a debug mode.
* The :envvar:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES_EXCLUDE` environment
variable was added to optionally exclude specific libraries from the
detected set of :variable:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES`.
* The :command:`install(DIRECTORY)` command gained a new
``EXCLUDE_EMPTY_DIRECTORIES`` option to skip installation
of empty directories.
* The :command:`install(TARGETS)` command no longer ignores file sets which
haven't been defined at the point it is called. The ordering of
:command:`target_sources(FILE_SET)` and ``install(TARGETS)`` is no longer
semantically relevant.
* :ref:`Makefile Generators` and :ref:`Ninja Generators` gained support
for adding a linker launcher with ``Fortran``, ``CUDA``, and ``HIP``.
See the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable
and :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property for details.
* The :prop_sf:`MACOSX_PACKAGE_LOCATION` source file property now
works when set on a source directory, and copies its entire tree
into the bundle.
* The MSVC link ``-machine:`` flag is no longer added to the
``CMAKE_*_LINKER_FLAGS`` variables. See policy :policy:`CMP0197`.
* The :module:`FindBLAS` and :module:`FindLAPACK` modules now support the
NVIDIA Performance Libraries (NVPL).
* The :prop_tgt:`PDB_NAME` and :prop_tgt:`COMPILE_PDB_NAME` target properties
now support :manual:`generator expressions <cmake-generator-expressions(7)>`.
* The :command:`project` command now has experimental support for the
``COMPAT_VERSION`` keyword, gated by
``CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO``.
* Regular expressions match the ``^`` anchor at most once in repeated
searches, at the start of the input. See policy :policy:`CMP0186`.
* References to unmatched groups are allowed, they are replaced with empty
strings.
* Zero-length matches are always allowed.
* The :module`:CMakeDetermineVSServicePack` module has been deprecated
via policy :policy:`CMP0196`. Port projects to the
:variable:`CMAKE_<LANG>_COMPILER_VERSION` variable instead.
* The :module:`FindCABLE` module has been deprecated via policy
:policy:`CMP0191`.
* The :module:`FindGCCXML` module has been deprecated via policy
:policy:`CMP0188`. Port projects to CastXML instead.
* The :ref:`cmake --build <Build Tool Mode>` command-line tool, when used
with the :generator:`Xcode` generator, now detects when a third-party
tool has wrapped the generated ``.xcodeproj`` in a ``.xcworkspace``,
and drives the build through the workspace instead.

View File

@@ -1,6 +0,0 @@
FindASPELL
----------
* The :module:`FindASPELL` module now provides version variable, imported
targets, and components to optionally select Aspell library and executable
separately.

View File

@@ -1,7 +0,0 @@
FindGTest
---------
* The :module:`FindGTest` module's result variables ``GTEST_INCLUDE_DIRS``,
``GTEST_LIBRARIES``, ``GTEST_MAIN_LIBRARIES``, and ``GTEST_BOTH_LIBRARIES``
are now deprecated in favor of using ``GTest::gtest`` and
``GTest::gtest_main`` imported targets.

View File

@@ -1,9 +0,0 @@
FindProtobuf
------------
* The :module:`FindProtobuf` module's :command:`protobuf_generate(DEPENDENCIES)`
command argument now accepts multiple values.
* The :module:`FindProtobuf` module's commands :command:`protobuf_generate_cpp`
and :command:`protobuf_generate_python` together with their hint variables
``Protobuf_IMPORT_DIRS`` and ``PROTOBUF_GENERATE_CPP_APPEND_PATH`` are now
deprecated in favor of :command:`protobuf_generate`.

View File

@@ -1,6 +0,0 @@
FindPython-crosscompiling-consistency
-------------------------------------
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
enforce consistency of artifacts in cross-compiling mode. This prevent mixing
host and target artifacts. See policy :policy:`CMP0190` for more information.

View File

@@ -1,11 +0,0 @@
GNUInstallDirs-special-cases
----------------------------
* The :module:`GNUInstallDirs` module now prefers to default
``SYSCONFDIR``, ``LOCALSTATEDIR``, and ``RUNSTATEDIR`` to
absolute paths when installing to special prefixes.
See policy :policy:`CMP0192`.
* The :module:`GNUInstallDirs` module now caches ``CMAKE_INSTALL_*``
variables with their leading ``usr/`` for install prefix ``/``.
See policy :policy:`CMP0193`.

View File

@@ -1,4 +0,0 @@
add-dependency-one-arg
----------------------
* The :command:`add_dependencies` command may be called with no dependencies.

View File

@@ -1,5 +0,0 @@
asm-no-msvc
-----------
* Enabling ``ASM`` no longer accidentally succeeds using ``MSVC``'s ``cl``
C compiler as an assembler. See policy :policy:`CMP0194`.

View File

@@ -1,7 +0,0 @@
automoc-include-directories
---------------------------
* The :prop_tgt:`AUTOMOC_INCLUDE_DIRECTORIES` target property and associated
:variable:`CMAKE_AUTOMOC_INCLUDE_DIRECTORIES` variable were added to
override the automatic discovery of moc includes from a target's transitive
include directories.

View File

@@ -1,8 +0,0 @@
cmake-find-required
-------------------
* The :variable:`CMAKE_FIND_REQUIRED` variable was added to tell
:command:`find_package`, :command:`find_path`, :command:`find_file`,
:command:`find_library`, and :command:`find_program` to be ``REQUIRED``
by default. The commands also gained an ``OPTIONAL`` keyword to ignore
the variable for a specific call.

View File

@@ -1,6 +0,0 @@
cmake-pkg-config-import
-----------------------
* The :command:`cmake_pkg_config` command now supports the ``IMPORT`` and
``POPULATE`` subcommands for interfacing CMake targets with pkg-config based
dependencies.

View File

@@ -1,5 +0,0 @@
compiler-architecture-id
------------------------
* The :variable:`CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID` variable is now
populated for most compilers, and documented for public use.

View File

@@ -1,7 +0,0 @@
configure-log-find-v1
---------------------
* The :ref:`find configure-log event` ``find-v1`` has been added to
:manual:`cmake-configure-log(7)` to track calls to the :command:`find_file`,
:command:`find_path`, :command:`find_library`, and :command:`find_program`
commands.

View File

@@ -1,6 +0,0 @@
cpack-nuget-symbol-package
--------------------------
* The :cpack_gen:`CPack NuGet Generator` gained option
:variable:`CPACK_NUGET_SYMBOL_PACKAGE` to generate NuGet
symbol packages containing PDB files.

View File

@@ -1,8 +0,0 @@
cpack-rpm-weak-deps-tags
------------------------
* The :cpack_gen:`CPack RPM Generator` gained
:variable:`CPACK_RPM_PACKAGE_ENHANCES`,
:variable:`CPACK_RPM_PACKAGE_RECOMMENDS`, and
:variable:`CPACK_RPM_PACKAGE_SUPPLEMENTS`
variables to specify the corresponding RPM spec fields.

View File

@@ -1,7 +0,0 @@
ctest-schedule-random-seed
--------------------------
* :manual:`ctest(1)` gained a
:option:`--schedule-random-seed <ctest --schedule-random-seed>`
option to specify a numeric random seed to make
:option:`ctest --schedule-random` deterministic for reproduction.

View File

@@ -1,8 +0,0 @@
diab-compiler-support
---------------------
* `Diab compilers from Wind River Systems`_, versions 5.9.x+, are now
supported with :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``Diab``
for languages ``ASM``, ``C``, and ``CXX``.
.. _`Diab compilers from Wind River Systems`: https://www.windriver.com/resource/wind-river-diab-compiler-product-overview

View File

@@ -1,6 +0,0 @@
externalproject-archive-types
-----------------------------
* The :module:`ExternalProject` module no longer checks the ``URL`` archive
file extension. Any archive type that :option:`cmake -E tar <cmake-E tar>`
can extract is now allowed.

View File

@@ -1,6 +0,0 @@
fileapi-reply-on-failure
------------------------
* The :manual:`cmake-file-api(7)` :ref:`v1 <file-api v1>` now writes
partial replies when buildsystem generation fails with an error.
See the :ref:`v1 Reply Error Index <file-api reply error index>`.

View File

@@ -1,6 +0,0 @@
genex-transitive-link-libraries
-------------------------------
* The :genex:`TARGET_PROPERTY` generator expression now evaluates the
:prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
target properties transitively. See policy :policy:`CMP0189`.

View File

@@ -1,8 +0,0 @@
iar-add-icstat-support
----------------------
* The :variable:`CMAKE_<LANG>_ICSTAT` variable and corresponding
:prop_tgt:`<LANG>_ICSTAT` target property were added to tell
the :ref:`Makefile Generators` and the :ref:`Ninja Generators`
to run the IAR ``icstat`` tool along with the compiler for
``C`` and ``CXX`` languages.

View File

@@ -1,9 +0,0 @@
implicit-find-events
--------------------
* The :manual:`cmake-configure-log(7)` will report events from ``find_``
commands without any find-debug flags (e.g.,
:variable:`CMAKE_FIND_DEBUG_MODE`) when they transition between "found" and
"not found" or when they are first defined. The
:variable:`CMAKE_FIND_DEBUG_MODE_NO_IMPLICIT_CONFIGURE_LOG` variable will
suppress these events without any explicit request for a debug mode.

View File

@@ -1,6 +0,0 @@
implicit-link-lib-exclude
-------------------------
* The :envvar:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES_EXCLUDE` environment
variable was added to optionally exclude specific libraries from the
detected set of :variable:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES`.

View File

@@ -1,6 +0,0 @@
install-DIRECTORY-exclude-empty
-------------------------------
* The :command:`install(DIRECTORY)` command gained a new
``EXCLUDE_EMPTY_DIRECTORIES`` option to skip installation
of empty directories.

View File

@@ -1,7 +0,0 @@
install-nonextant-file-set
--------------------------
* The :command:`install(TARGETS)` command no longer ignores file sets which
haven't been defined at the point it is called. The ordering of
:command:`target_sources(FILE_SET)` and ``install(TARGETS)`` is no longer
semantically relevant.

View File

@@ -1,7 +0,0 @@
linker-launcher
---------------
* :ref:`Makefile Generators` and :ref:`Ninja Generators` gained support
for adding a linker launcher with ``Fortran``, ``CUDA``, and ``HIP``.
See the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable
and :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property for details.

View File

@@ -1,6 +0,0 @@
macos-bundle-content-dir
------------------------
* The :prop_sf:`MACOSX_PACKAGE_LOCATION` source file property now
works when set on a source directory, and copies its entire tree
into the bundle.

View File

@@ -1,5 +0,0 @@
msvc-link-machine
-----------------
* The MSVC link ``-machine:`` flag is no longer added to the
``CMAKE_*_LINKER_FLAGS`` variables. See policy :policy:`CMP0197`.

View File

@@ -1,5 +0,0 @@
NVPL Support
------------
* The :module:`FindBLAS` and :module:`FindLAPACK` modules now support the
NVIDIA Performance Libraries (NVPL).

View File

@@ -1,5 +0,0 @@
pdb-name-genex-support
----------------------
* The :prop_tgt:`PDB_NAME` and :prop_tgt:`COMPILE_PDB_NAME` target properties
now support :manual:`generator expressions <cmake-generator-expressions(7)>`.

View File

@@ -1,6 +0,0 @@
project-compat-version
----------------------
* The :command:`project` command now has experimental support for the
``COMPAT_VERSION`` keyword, gated by
``CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO``.

View File

@@ -1,10 +0,0 @@
regex-fixes
-----------
* Regular expressions match the ``^`` anchor at most once in repeated
searches, at the start of the input. See policy :policy:`CMP0186`.
* References to unmatched groups are allowed, they are replaced with empty
strings.
* Zero-length matches are always allowed.

View File

@@ -1,6 +0,0 @@
remove-CMakeDetermineVSServicePack
----------------------------------
* The :module`:CMakeDetermineVSServicePack` module has been deprecated
via policy :policy:`CMP0196`. Port projects to the
:variable:`CMAKE_<LANG>_COMPILER_VERSION` variable instead.

View File

@@ -1,5 +0,0 @@
remove-FindCABLE
-----------------
* The :module:`FindCABLE` module has been deprecated via policy
:policy:`CMP0191`.

View File

@@ -1,5 +0,0 @@
remove-FindGCCXML
-----------------
* The :module:`FindGCCXML` module has been deprecated via policy
:policy:`CMP0188`. Port projects to CastXML instead.

View File

@@ -1,7 +0,0 @@
xcode-build-workspace
---------------------
* The :ref:`cmake --build <Build Tool Mode>` command-line tool, when used
with the :generator:`Xcode` generator, now detects when a third-party
tool has wrapped the generated ``.xcodeproj`` in a ``.xcworkspace``,
and drives the build through the workspace instead.

View File

@@ -15,6 +15,7 @@ Releases
.. toctree::
:maxdepth: 1
4.1 <4.1>
4.0 <4.0>
3.31 <3.31>
3.30 <3.30>