[ANNOUNCE] CMake 3.30.0 available for download

John Parent john.parent at kitware.com
Wed Jul 3 00:52:34 BST 2024


We are pleased to announce that CMake 3.30 is now available for download.
  https://cmake.org/download/

Documentation is available at:
  https://cmake.org/cmake/help/v3.30

Release notes appear below and are also published at
  https://cmake.org/cmake/help/v3.30/release/3.30.html

Release milestone is available at:
  https://gitlab.kitware.com/cmake/cmake/-/milestones/142

Some of the most significant changes in CMake 3.30 are:

* "cmake-presets(7)" files now support schema version "9". "include"
  fields now expand all macros except "$env{}" and preset-specific
  macros, i.e., those derived from the fields inside a preset's
  definition.

* The "Compile Features" 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 "CMAKE_<LANG>_STANDARD_LATEST" variable was added to describe
  the latest "<LANG>" language standard CMake supports for the
  selected compiler.

* The "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment
  variable were added to specify a default minimum TLS version for
  connections to "https://" URLs by the "file(DOWNLOAD)" and
  "file(UPLOAD)" commands.

* The "GENERATED" source file property is now visible in all
  directories.  See policy "CMP0163".  Policy "CMP0118"'s
  documentation has been revised to describe its actual effects.

* The "FindPython", "FindPython2", and "FindPython3" modules, on
  Windows, now offer better support for the Python debug variant.

* The "TARGET_PROPERTY" generator expression learned to evaluate
  custom transitive properties defined by new
  "TRANSITIVE_COMPILE_PROPERTIES" and "TRANSITIVE_LINK_PROPERTIES"
  target properties.

* The "CPack WIX Generator" gained support for WiX Toolset v4. See the
  "CPACK_WIX_VERSION" variable.

* The "FindBoost" module has been removed by policy "CMP0167". Port
  projects to upstream Boost's "BoostConfig.cmake" package
  configuration file, for which "find_package(Boost)" now searches.

* The precompiled Windows ".msi" installers provided on cmake.org,
  when performing a fresh installation, now modify the system-wide
  "PATH" by default.



CMake 3.30 Release Notes
************************

Changes made since CMake 3.29 include the following.


New Features
============


Presets
-------

* "cmake-presets(7)" files now support schema version "9". "include"
  fields now expand all macros except "$env{}" and preset-specific
  macros, i.e., those derived from the fields inside a preset's
  definition.


File-Based API
--------------

* The "cmake-file-api(7)" "cmakeFiles" version 1 object's "version"
  field has been updated to 1.1.  It gained a "globsDependent" field
  to report "file(GLOB)" calls using "CONFIGURE_DEPENDS".


Generators
----------

* Visual Studio Generators now add "UseDebugLibraries" indicators to
  ".vcxproj" files to denote which configurations are debug
  configurations. See policy "CMP0162".


Languages
---------

* The "Compile Features" 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.


Commands
--------

* The "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
  "CMP0164".

* The "enable_language()" command now fails with an error if it is
  called before the first "project()" call. See policy "CMP0165".

* The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained a
  "TLS_VERSION <min>" option to specify the minimum TLS version for
  connections to "https://" URLs.


Variables
---------

* The "CMAKE_<LANG>_STANDARD_LATEST" variable was added to describe
  the latest "<LANG>" language standard CMake supports for the
  selected compiler.

* The "CMAKE_TLS_VERIFY" environment variable was added as a fallback
  to the existing "CMAKE_TLS_VERIFY" variable.  It specifies whether
  to verify the server certificate for "https://" URLs by default.

* The "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment
  variable were added to specify a default minimum TLS version for
  connections to "https://" URLs by the "file(DOWNLOAD)" and
  "file(UPLOAD)" commands.

* The "CMAKE_VS_USE_DEBUG_LIBRARIES" variable and corresponding
  "VS_USE_DEBUG_LIBRARIES" target property were added to explicitly
  control "UseDebugLibraries" indicators in ".vcxproj" files.


Properties
----------

* The "GENERATED" source file property is now visible in all
  directories.  See policy "CMP0163".  Policy "CMP0118"'s
  documentation has been revised to describe its actual effects.

* The "PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE" global property
  can be used to propagate "CMAKE_PROJECT_TOP_LEVEL_INCLUDES" into
  "try_compile()" calls that use the whole-project signature. This is
  primarily intended as a way for dependency providers to be enabled
  in such "try_compile()" calls.

* A "VS_FILTER_PROPS" target property was added to tell Visual Studio
  Generators to use a custom MSBuild filter ".props" file.


Modules
-------

* The "ExternalProject" module's "ExternalProject_Add()" command
  gained a "TLS_VERSION <min>" option, and support for the
  "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment
  variable, to specify the minimum TLS version for connections to
  "https://" URLs.

* The "FindBacktrace" module now provides an imported target.

* The "FindBLAS" and "FindLAPACK" modules gained support for
  "libblastrampoline".

* The "FindCUDAToolkit" module now provides a target for "libnvfatbin"
  and "libnvfatbin_static", if found.

* The "FindCUDAToolkit" module now searches the "CMAKE_CUDA_COMPILER"
  variable and the "CUDACXX" environment variable even when the "CUDA"
  language isn't enabled.

* The "FindOpenMP" module gained an "OpenMP_RUNTIME_MSVC" option to
  control the OpenMP runtime used with MSVC.

* The "FindPython" and "FindPython3" modules gained support for the
  free threaded Python version.

* The "FindPython", "FindPython2", and "FindPython3" modules, on
  Windows, now offer better support for the Python debug variant:

  * new variables:

    * "Python_EXECUTABLE_DEBUG"

    * "Python_INTERPRETER"

    * "Python_DEBUG_POSTFIX"

  * new targets:

    * "Python::InterpreterDebug"

    * "Python::InterpreterMultiConfig"

  The "python_add_library()" command now manages the "DEBUG_POSTFIX"
  target property based on the value of the "Python_DEBUG_POSTFIX"
  variable.


Generator Expressions
---------------------

* The "<LANG>_COMPILER_FRONTEND_VARIANT" family of generator
  expressions were added to access the value of the associated
  "CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT" variables.

* Link features, as used with the "LINK_LIBRARY" generator expression,
  gained the ability to have attributes that describe their behavior
  by specifying the "CMAKE_LINK_LIBRARY_<FEATURE>_ATTRIBUTES" or
  "CMAKE_<LANG>_LINK_LIBRARY_<FEATURE>_ATTRIBUTES" variables.

* The "QUOTE" generator expression was added to evaluate to """.

* The "TARGET_PROPERTY" generator expression learned to evaluate
  custom transitive properties defined by new
  "TRANSITIVE_COMPILE_PROPERTIES" and "TRANSITIVE_LINK_PROPERTIES"
  target properties.

* The "TARGET_PROPERTY" generator expression now evaluates target
  properties "INTERFACE_LINK_OPTIONS", "INTERFACE_LINK_DIRECTORIES",
  and "INTERFACE_LINK_DEPENDS" correctly by following private
  dependencies of static libraries.  See policy "CMP0166".


CTest
-----

* The "ctest_submit()" command and "ctest -T Submit" step gained
  "TLSVersion" and "TLSVerify" options to control negotiation with
  "https://" URLs.  See the "CTEST_TLS_VERSION" and "CTEST_TLS_VERIFY"
  variables.


CPack
-----

* The "CPack Inno Setup Generator" is now available on non-Windows
  hosts.

* The "CPack NuGet Generator" gained the
  "CPACK_NUGET_PACKAGE_README",
  "CPACK_NUGET_PACKAGE_REPOSITORY_URL",
  "CPACK_NUGET_PACKAGE_REPOSITORY_TYPE",
  "CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH", and
  "CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT" variables.

* The "CPack NuGet Generator" can now generate dependency groups for
  framework-specific dependencies. The "CPACK_NUGET_PACKAGE_TFMS"
  variable was added to specify a list of target framework monikers
  (TFMs) for which groups should be generated.

* The "CPack WIX Generator" gained support for WiX Toolset v4. See the
  "CPACK_WIX_VERSION" variable.


Deprecated and Removed Features
===============================

* The "FindBoost" module has been removed by policy "CMP0167". Port
  projects to upstream Boost's "BoostConfig.cmake" package
  configuration file, for which "find_package(Boost)" now searches.

* Calling "FetchContent_Populate()" with just the name of a dependency
  is now deprecated. Projects should call
  "FetchContent_MakeAvailable()" instead. See policy "CMP0169".
  Calling "FetchContent_Populate()" with full population details
  rather than just a dependency name remains fully supported.

* The "Visual Studio 9 2008" generator has been removed.


Other Changes
=============

* The precompiled Windows ".msi" installers provided on cmake.org,
  when performing a fresh installation, now modify the system-wide
  "PATH" 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 now uses LF
  newlines, instead of CRLF newlines, for consistency with modern
  conventions.

* 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.

* "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). "cmake --fresh" also forces the
  download, update, and patch steps of directly populated dependencies
  to be re-executed. Policy "CMP0168" provides backward compatibility
  for those projects that still rely on using a sub-build for content
  population.

* When "FETCHCONTENT_FULLY_DISCONNECTED" is set to true,
  "FetchContent_MakeAvailable()" and the single-argument form of
  "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
  "CMP0170".

----------------------------------------------------------------------------
Changes made since CMake 3.30.0-rc4:

Brad King (2):
  ci: Update CMake version to 3.30.0-rc4
  CMake 3.30.0

權少 (1):
  Help: Fix typo in cmake-cxxmodules(7) note syntax
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-devel/attachments/20240702/f0222321/attachment-0001.htm>


More information about the kde-devel mailing list