diff options
author | Brad King <brad.king@kitware.com> | 2024-06-04 13:18:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-06-05 13:56:04 (GMT) |
commit | d5402283d8e5c8babd6a103ba8aa80d64afb56e1 (patch) | |
tree | 44735fc704534f6beeecb9a5f25b1afe312a6e1d /Help/release/3.30.rst | |
parent | a67bb7f4883b081c351e1e89a2f8cc867960a261 (diff) | |
download | CMake-d5402283d8e5c8babd6a103ba8aa80d64afb56e1.zip CMake-d5402283d8e5c8babd6a103ba8aa80d64afb56e1.tar.gz CMake-d5402283d8e5c8babd6a103ba8aa80d64afb56e1.tar.bz2 |
Help: Consolidate 3.30 release notes
Run the `Utilities/Release/consolidate-relnotes.bash` script to move
notes from `Help/release/dev/*` into `Help/release/3.30.rst`.
Diffstat (limited to 'Help/release/3.30.rst')
-rw-r--r-- | Help/release/3.30.rst | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/Help/release/3.30.rst b/Help/release/3.30.rst new file mode 100644 index 0000000..6225f76 --- /dev/null +++ b/Help/release/3.30.rst @@ -0,0 +1,199 @@ +CMake 3.30 Release Notes +************************ + +.. only:: html + + .. contents:: + +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`. + +* The :cpack_gen:`CPack Inno Setup Generator` is now available + on non-Windows hosts. + +* 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. + +* The :cpack_gen:`CPack WIX Generator` gained support for WiX Toolset v4. + See the :variable:`CPACK_WIX_VERSION` variable. + +* 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 :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 :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 :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. + +* The :manual:`Compile Features <cmake-compile-features(7)>` functionality + now implements support for the ``cxx_std_26`` and ``cuda_std_26`` + meta-features to indicate that the compiler mode must be at least C++26. + 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. + +* The :prop_gbl:`PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE` global property + can be used to propagate :variable:`CMAKE_PROJECT_TOP_LEVEL_INCLUDES` into + :command:`try_compile` calls that use the + :ref:`whole-project signature <Try Compiling Whole Projects>`. + 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. + +* The :command:`enable_language` command now fails with an error + if it is called before the first :command:`project` call. + See policy :policy:`CMP0165`. + +* 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:`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. + +* The :module:`FindOpenMP` module gained a ``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: + + * new variables: + + * ``Python_EXECUTABLE_DEBUG`` + * ``Python_INTERPRETER`` + * ``Python_DEBUG_POSTFIX`` + + * new targets: + + * ``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 :module:`FindPython`, :module:`FindPython3` modules gained the support + of the free threaded python version. + +* Generator expressions ``$<<LANG>_COMPILER_FRONTEND_VARIANT:...>`` were added that allow + access to 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:`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 ``"``. + +* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to + describe the latest supported standard of language ``<LANG>``. + +* :manual:`cmake-presets(7)` files now support schema version ``9``: + + * ``include`` fields now expand all macros except ``$env{}`` and + preset-specific macros. + +* 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 :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 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. + +* 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. + +* 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. + +* :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. |