Help: Organize and revise 3.30 release notes

Add section headers similar to the 3.29 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.

Drop the `CXX_MODULE_STD` release note since it is an experimental
feature.
This commit is contained in:
Brad King
2024-06-04 09:36:52 -04:00
parent d5402283d8
commit 01436f6edd

View File

@@ -7,49 +7,32 @@ CMake 3.30 Release Notes
Changes made since CMake 3.29 include the following.
* On platforms that do not support shared libraries, the :command:`add_library`
command now rejects creation of shared libraries instead of automatically
converting them to static libraries. See policy :policy:`CMP0164`.
New Features
============
* The :cpack_gen:`CPack Inno Setup Generator` is now available
on non-Windows hosts.
Presets
-------
* The :cpack_gen:`CPack NuGet Generator` can now generate dependency groups
for framework-specific dependencies. The :variable:`CPACK_NUGET_PACKAGE_TFMS`
was added to specify a list of framework TFMs for which groups should be
generated.
* :manual:`cmake-presets(7)` files now support schema version ``9``.
``include`` fields now expand all macros except ``$env{}`` and
preset-specific macros.
* The :cpack_gen:`CPack WIX Generator` gained support for WiX Toolset v4.
See the :variable:`CPACK_WIX_VERSION` variable.
File-Based API
--------------
* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
gained a ``TLS_VERSION <min>`` option to specify the minimum TLS
version for connections to ``https://`` URLs.
* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object's ``version``
field has been updated to 1.1. It gained a ``globsDependent`` field to
report :command:`file(GLOB)` calls using ``CONFIGURE_DEPENDS``.
* The :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
environment variable were added to specify a default minimum TLS version
for connections to ``https://`` URLs by the :command:`file(DOWNLOAD)`
and :command:`file(UPLOAD)` commands.
Generators
----------
* The :envvar:`CMAKE_TLS_VERIFY` environment variable was added as a fallback
to the existing :variable:`CMAKE_TLS_VERIFY` variable. It specifies
whether to verify the server certificate for ``https://`` URLs by default.
* :ref:`Visual Studio Generators` now add ``UseDebugLibraries`` indicators to
``.vcxproj`` files to denote which configurations are debug configurations.
See policy :policy:`CMP0162`.
* The :module:`ExternalProject` module's :command:`ExternalProject_Add`
command gained a ``TLS_VERSION <min>`` option, and support for the
:variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
environment variable, to specify the minimum TLS version for connections
to ``https://`` URLs.
* The :command:`ctest_submit` command and :option:`ctest -T Submit <ctest -T>`
step gained ``TLSVersion`` and ``TLSVerify`` options to control negotiation
with ``https://`` URLs. See the :variable:`CTEST_TLS_VERSION` and
:variable:`CTEST_TLS_VERIFY` variables.
* The :genex:`TARGET_PROPERTY` generator expression learned to evaluate
:ref:`custom transitive properties <Custom Transitive Properties>`
defined by new :prop_tgt:`TRANSITIVE_COMPILE_PROPERTIES` and
:prop_tgt:`TRANSITIVE_LINK_PROPERTIES` target properties.
Languages
---------
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
now implements support for the ``cxx_std_26`` and ``cuda_std_26``
@@ -57,8 +40,47 @@ Changes made since CMake 3.29 include the following.
These meta-features were first documented by CMake 3.25, but were not fully
implemented.
* The :prop_tgt:`CXX_MODULE_STD` property may be used to control
``import std;`` support for targets.
Commands
--------
* The :command:`add_library` command, on platforms that do not support shared
libraries, now rejects creation of shared libraries instead of automatically
converting them to static libraries. See policy :policy:`CMP0164`.
* The :command:`enable_language` command now fails with an error
if it is called before the first :command:`project` call.
See policy :policy:`CMP0165`.
* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
gained a ``TLS_VERSION <min>`` option to specify the minimum TLS
version for connections to ``https://`` URLs.
Variables
---------
* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to
describe the latest ``<LANG>`` language standard CMake supports for
the selected compiler.
* The :envvar:`CMAKE_TLS_VERIFY` environment variable was added as a fallback
to the existing :variable:`CMAKE_TLS_VERIFY` variable. It specifies
whether to verify the server certificate for ``https://`` URLs by default.
* The :variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
environment variable were added to specify a default minimum TLS version
for connections to ``https://`` URLs by the :command:`file(DOWNLOAD)`
and :command:`file(UPLOAD)` commands.
* The :variable:`CMAKE_VS_USE_DEBUG_LIBRARIES` variable and corresponding
:prop_tgt:`VS_USE_DEBUG_LIBRARIES` target property were added to explicitly
control ``UseDebugLibraries`` indicators in ``.vcxproj`` files.
Properties
----------
* The :prop_sf:`GENERATED` source file property is now visible in all
directories. See policy :policy:`CMP0163`. Policy :policy:`CMP0118`'s
documentation has been revised to describe its actual effects.
* The :prop_gbl:`PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE` global property
can be used to propagate :variable:`CMAKE_PROJECT_TOP_LEVEL_INCLUDES` into
@@ -67,60 +89,40 @@ Changes made since CMake 3.29 include the following.
This is primarily intended as a way for dependency providers to be enabled
in such :command:`try_compile` calls.
* Calling :command:`FetchContent_Populate` with just the name of a
dependency is now deprecated. Projects should call
:command:`FetchContent_MakeAvailable` instead. See policy :policy:`CMP0169`.
Calling :command:`FetchContent_Populate` with full population details
rather than just a dependency name remains fully supported.
* A :prop_tgt:`VS_FILTER_PROPS` target property was added to tell
:ref:`Visual Studio Generators` to use a custom MSBuild filter
``.props`` file.
* The :command:`enable_language` command now fails with an error
if it is called before the first :command:`project` call.
See policy :policy:`CMP0165`.
Modules
-------
* When :variable:`FETCHCONTENT_FULLY_DISCONNECTED` is set to true,
:command:`FetchContent_MakeAvailable` and the single-argument form of
:command:`FetchContent_Populate` require that the dependency's source
directory has already been populated. CMake 3.29 and earlier did not
check this requirement, but it is now enforced, subject to policy
:policy:`CMP0170`.
* :module:`FetchContent` now prefers to populate content directly rather
than using a separate sub-build. This may significantly improve configure
times on some systems (Windows especially, but also on macOS when using
the Xcode generator). Policy :policy:`CMP0168` provides backward
compatibility for those projects that still rely on using a sub-build for
content population.
* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object's ``version``
field has been updated to 1.1.
* The :manual:`cmake-file-api(7)` "cmakeFiles" version 1 object gained a
``globsDependent`` field to report :command:`file(GLOB)` calls using
``CONFIGURE_DEPENDS``.
* The :module:`ExternalProject` module's :command:`ExternalProject_Add`
command gained a ``TLS_VERSION <min>`` option, and support for the
:variable:`CMAKE_TLS_VERSION` variable and :envvar:`CMAKE_TLS_VERSION`
environment variable, to specify the minimum TLS version for connections
to ``https://`` URLs.
* The :module:`FindBacktrace` module now provides an imported target.
* The :module:`FindBLAS` and :module:`FindLAPACK` modules gained
support for ``libblastrampoline``.
* The :module:`FindBoost` module has been removed by policy :policy:`CMP0167`.
Port projects to upstream Boost's ``BoostConfig.cmake`` package
configuration file, for which ``find_package(Boost)`` now searches.
* The :module:`FindCUDAToolkit` module now provides a target for
``libnvfatbin`` and ``libnvfatbin_static``, if found.
* The :module:`FindCUDAToolkit` module now searches the
:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` and
the environment variable :envvar:`CUDACXX` even when the CUDA
language isn't enabled.
:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`
variable and the :envvar:`CUDACXX` environment variable
even when the ``CUDA`` language isn't enabled.
* The :module:`FindOpenMP` module gained a ``OpenMP_RUNTIME_MSVC``
* The :module:`FindOpenMP` module gained an ``OpenMP_RUNTIME_MSVC``
option to control the OpenMP runtime used with MSVC.
* The :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
modules offer, on ``Windows`` platform, a better support of the ``Python``
debug version:
* The :module:`FindPython` and :module:`FindPython3` modules gained
support for the free threaded Python version.
* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
modules, on Windows, now offer better support for the Python debug variant:
* new variables:
@@ -133,67 +135,101 @@ Changes made since CMake 3.29 include the following.
* ``Python::InterpreterDebug``
* ``Python::InterpreterMultiConfig``
And the ``python_add_library()`` command manage the :prop_tgt:`DEBUG_POSTFIX`
target property based on the value of the ``Python_DEBUG_POSTFIX`` variable.
The ``python_add_library()`` command now manages the
:prop_tgt:`DEBUG_POSTFIX` target property based on the value
of the ``Python_DEBUG_POSTFIX`` variable.
* The :module:`FindPython`, :module:`FindPython3` modules gained the support
of the free threaded python version.
Generator Expressions
---------------------
* Generator expressions ``$<<LANG>_COMPILER_FRONTEND_VARIANT:...>`` were added that allow
access to the value of the associated :variable:`CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT`
variables.
* The :genex:`<LANG>_COMPILER_FRONTEND_VARIANT <C_COMPILER_FRONTEND_VARIANT>`
family of generator expressions were added to access the value of the
associated :variable:`CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT` variables.
* Link features, as used with the :genex:`LINK_LIBRARY` generator expression,
gained the ability to have properties that describe their behavior by
specifying the :variable:`CMAKE_LINK_LIBRARY_<FEATURE>_PROPERTIES` or
:variable:`CMAKE_<LANG>_LINK_LIBRARY_<FEATURE>_PROPERTIES` variables.
* The :genex:`QUOTE` generator expression was added to evaluate to ``"``.
* The :genex:`TARGET_PROPERTY` generator expression learned to evaluate
:ref:`custom transitive properties <Custom Transitive Properties>`
defined by new :prop_tgt:`TRANSITIVE_COMPILE_PROPERTIES` and
:prop_tgt:`TRANSITIVE_LINK_PROPERTIES` target properties.
* The :genex:`TARGET_PROPERTY` generator expression now evaluates target
properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
:prop_tgt:`INTERFACE_LINK_DIRECTORIES`, and
:prop_tgt:`INTERFACE_LINK_DEPENDS` correctly by following private
dependencies of static libraries. See policy :policy:`CMP0166`.
* The :genex:`$<QUOTE>` generator expression was added to evaluate to ``"``.
CTest
-----
* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to
describe the latest supported standard of language ``<LANG>``.
* The :command:`ctest_submit` command and :option:`ctest -T Submit <ctest -T>`
step gained ``TLSVersion`` and ``TLSVerify`` options to control negotiation
with ``https://`` URLs. See the :variable:`CTEST_TLS_VERSION` and
:variable:`CTEST_TLS_VERIFY` variables.
* :manual:`cmake-presets(7)` files now support schema version ``9``:
CPack
-----
* ``include`` fields now expand all macros except ``$env{}`` and
preset-specific macros.
* The :cpack_gen:`CPack Inno Setup Generator` is now available
on non-Windows hosts.
* The durations printed after "Configuring done" and "Generating done"
messages now reflect time spent in generator-specific steps, and
in a code model evaluation step at the beginning of generation that
was not previously captured. Printed durations may appear longer
than in previous versions of CMake.
* The :cpack_gen:`CPack NuGet Generator` can now generate dependency groups
for framework-specific dependencies. The :variable:`CPACK_NUGET_PACKAGE_TFMS`
variable was added to specify a list of target framework monikers (TFMs)
for which groups should be generated.
* The :prop_sf:`GENERATED` source file property is now visible in all
directories. See policy :policy:`CMP0163`. Policy :policy:`CMP0118`'s
documentation has been revised to describe its actual effects.
* The :cpack_gen:`CPack WIX Generator` gained support for WiX Toolset v4.
See the :variable:`CPACK_WIX_VERSION` variable.
Deprecated and Removed Features
===============================
* The :module:`FindBoost` module has been removed by policy :policy:`CMP0167`.
Port projects to upstream Boost's ``BoostConfig.cmake`` package
configuration file, for which ``find_package(Boost)`` now searches.
* Calling :command:`FetchContent_Populate` with just the name of a
dependency is now deprecated. Projects should call
:command:`FetchContent_MakeAvailable` instead. See policy :policy:`CMP0169`.
Calling :command:`FetchContent_Populate` with full population details
rather than just a dependency name remains fully supported.
* The :generator:`Visual Studio 9 2008` generator has been removed.
Other Changes
=============
* The precompiled Windows ``.msi`` installers provided on
`cmake.org <https://cmake.org/download/>`_, when performing a fresh
installation, now modify the system-wide ``PATH`` by default.
When replacing an existing installation, the ``PATH`` modification
preference is preserved by default.
When replacing an existing installation of 3.30 or later, the ``PATH``
modification preference is preserved by default.
* The official ``.zip`` source archive provided on
`cmake.org <https://cmake.org/download/>`_ now uses LF newlines,
instead of CRLF newlines, for consistency with modern conventions.
* The :generator:`Visual Studio 9 2008` generator has been removed.
* The durations printed after "Configuring done" and "Generating done"
messages now reflect time spent in generator-specific steps, and
in a code model evaluation step at the beginning of generation that
was not previously captured. Printed durations may appear longer
than in previous versions of CMake, but are more accurate.
* A :prop_tgt:`VS_FILTER_PROPS` target property was added to tell
:ref:`Visual Studio Generators` for VS 2010 and above to use a
custom MSBuild filter ``.props`` file.
* :module:`FetchContent` now prefers to populate content directly rather
than using a separate sub-build. This may significantly improve configure
times on some systems (Windows especially, but also on macOS when using
the Xcode generator). Policy :policy:`CMP0168` provides backward
compatibility for those projects that still rely on using a sub-build for
content population.
* :ref:`Visual Studio Generators` now add ``UseDebugLibraries`` indicators to
``.vcxproj`` files to denote which configurations are debug configurations.
See policy :policy:`CMP0162`.
* The :variable:`CMAKE_VS_USE_DEBUG_LIBRARIES` variable and corresponding
:prop_tgt:`VS_USE_DEBUG_LIBRARIES` target property were added to explicitly
control ``UseDebugLibraries`` indicators in ``.vcxproj`` files.
* When :variable:`FETCHCONTENT_FULLY_DISCONNECTED` is set to true,
:command:`FetchContent_MakeAvailable` and the single-argument form of
:command:`FetchContent_Populate` require that the dependency's source
directory has already been populated. CMake 3.29 and earlier did not
check this requirement, but it is now enforced, subject to policy
:policy:`CMP0170`.