<div dir="ltr">I am proud to announce the second CMake 3.30 release candidate.<br>  <a href="https://cmake.org/download/">https://cmake.org/download/</a><br><br>Documentation is available at:<br>  <a href="https://cmake.org/cmake/help/v3.30">https://cmake.org/cmake/help/v3.30</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.30/release/3.30.html">https://cmake.org/cmake/help/v3.30/release/3.30.html</a><br><br>Release milestone is available at:<br>  <a href="https://gitlab.kitware.com/cmake/cmake/-/milestones/142">https://gitlab.kitware.com/cmake/cmake/-/milestones/142</a><br><br>Some of the most significant changes in CMake 3.30 are:<br><br>* "cmake-presets(7)" files now support schema version "9". "include"<br>  fields now expand all macros except "$env{}" and preset-specific<br>  macros, i.e., those derived from the fields inside a preset's<br>  definition.<br><br>* The "Compile Features" functionality now implements support for the<br>  "cxx_std_26" and "cuda_std_26" meta-features to indicate that the<br>  compiler mode must be at least C++26. These meta-features were first<br>  documented by CMake 3.25, but were not fully implemented.<br><br>* The "CMAKE_<LANG>_STANDARD_LATEST" variable was added to describe<br>  the latest "<LANG>" language standard CMake supports for the<br>  selected compiler.<br><br>* The "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment<br>  variable were added to specify a default minimum TLS version for<br>  connections to "https://" URLs by the "file(DOWNLOAD)" and<br>  "file(UPLOAD)" commands.<br><br>* The "GENERATED" source file property is now visible in all<br>  directories.  See policy "CMP0163".  Policy "CMP0118"'s<br>  documentation has been revised to describe its actual effects.<br><br>* The "FindPython", "FindPython2", and "FindPython3" modules, on<br>  Windows, now offer better support for the Python debug variant.<br><br>* The "TARGET_PROPERTY" generator expression learned to evaluate<br>  custom transitive properties defined by new<br>  "TRANSITIVE_COMPILE_PROPERTIES" and "TRANSITIVE_LINK_PROPERTIES"<br>  target properties.<br><br>* The "CPack WIX Generator" gained support for WiX Toolset v4. See the<br>  "CPACK_WIX_VERSION" variable.<br><br>* The "FindBoost" module has been removed by policy "CMP0167". Port<br>  projects to upstream Boost's "BoostConfig.cmake" package<br>  configuration file, for which "find_package(Boost)" now searches.<br><br>* The precompiled Windows ".msi" installers provided on <a href="http://cmake.org">cmake.org</a>,<br>  when performing a fresh installation, now modify the system-wide<br>  "PATH" by default.<br><br><br><br>CMake 3.30 Release Notes<br>************************<br><br>Changes made since CMake 3.29 include the following.<br><br><br>New Features<br>============<br><br><br>Presets<br>-------<br><br>* "cmake-presets(7)" files now support schema version "9". "include"<br>  fields now expand all macros except "$env{}" and preset-specific<br>  macros, i.e., those derived from the fields inside a preset's<br>  definition.<br><br><br>File-Based API<br>--------------<br><br>* The "cmake-file-api(7)" "cmakeFiles" version 1 object's "version"<br>  field has been updated to 1.1.  It gained a "globsDependent" field<br>  to report "file(GLOB)" calls using "CONFIGURE_DEPENDS".<br><br><br>Generators<br>----------<br><br>* Visual Studio Generators now add "UseDebugLibraries" indicators to<br>  ".vcxproj" files to denote which configurations are debug<br>  configurations. See policy "CMP0162".<br><br><br>Languages<br>---------<br><br>* The "Compile Features" functionality now implements support for the<br>  "cxx_std_26" and "cuda_std_26" meta-features to indicate that the<br>  compiler mode must be at least C++26. These meta-features were first<br>  documented by CMake 3.25, but were not fully implemented.<br><br><br>Commands<br>--------<br><br>* The "add_library()" command, on platforms that do not support shared<br>  libraries, now rejects creation of shared libraries instead of<br>  automatically converting them to static libraries.  See policy<br>  "CMP0164".<br><br>* The "enable_language()" command now fails with an error if it is<br>  called before the first "project()" call. See policy "CMP0165".<br><br>* The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained a<br>  "TLS_VERSION <min>" option to specify the minimum TLS version for<br>  connections to "https://" URLs.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_<LANG>_STANDARD_LATEST" variable was added to describe<br>  the latest "<LANG>" language standard CMake supports for the<br>  selected compiler.<br><br>* The "CMAKE_TLS_VERIFY" environment variable was added as a fallback<br>  to the existing "CMAKE_TLS_VERIFY" variable.  It specifies whether<br>  to verify the server certificate for "https://" URLs by default.<br><br>* The "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment<br>  variable were added to specify a default minimum TLS version for<br>  connections to "https://" URLs by the "file(DOWNLOAD)" and<br>  "file(UPLOAD)" commands.<br><br>* The "CMAKE_VS_USE_DEBUG_LIBRARIES" variable and corresponding<br>  "VS_USE_DEBUG_LIBRARIES" target property were added to explicitly<br>  control "UseDebugLibraries" indicators in ".vcxproj" files.<br><br><br>Properties<br>----------<br><br>* The "GENERATED" source file property is now visible in all<br>  directories.  See policy "CMP0163".  Policy "CMP0118"'s<br>  documentation has been revised to describe its actual effects.<br><br>* The "PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE" global property<br>  can be used to propagate "CMAKE_PROJECT_TOP_LEVEL_INCLUDES" into<br>  "try_compile()" calls that use the whole-project signature. This is<br>  primarily intended as a way for dependency providers to be enabled<br>  in such "try_compile()" calls.<br><br>* A "VS_FILTER_PROPS" target property was added to tell Visual Studio<br>  Generators to use a custom MSBuild filter ".props" file.<br><br><br>Modules<br>-------<br><br>* The "ExternalProject" module's "ExternalProject_Add()" command<br>  gained a "TLS_VERSION <min>" option, and support for the<br>  "CMAKE_TLS_VERSION" variable and "CMAKE_TLS_VERSION" environment<br>  variable, to specify the minimum TLS version for connections to<br>  "https://" URLs.<br><br>* The "FindBacktrace" module now provides an imported target.<br><br>* The "FindBLAS" and "FindLAPACK" modules gained support for<br>  "libblastrampoline".<br><br>* The "FindCUDAToolkit" module now provides a target for "libnvfatbin"<br>  and "libnvfatbin_static", if found.<br><br>* The "FindCUDAToolkit" module now searches the "CMAKE_CUDA_COMPILER"<br>  variable and the "CUDACXX" environment variable even when the "CUDA"<br>  language isn't enabled.<br><br>* The "FindOpenMP" module gained an "OpenMP_RUNTIME_MSVC" option to<br>  control the OpenMP runtime used with MSVC.<br><br>* The "FindPython" and "FindPython3" modules gained support for the<br>  free threaded Python version.<br><br>* The "FindPython", "FindPython2", and "FindPython3" modules, on<br>  Windows, now offer better support for the Python debug variant:<br><br>  * new variables:<br><br>    * "Python_EXECUTABLE_DEBUG"<br><br>    * "Python_INTERPRETER"<br><br>    * "Python_DEBUG_POSTFIX"<br><br>  * new targets:<br><br>    * "Python::InterpreterDebug"<br><br>    * "Python::InterpreterMultiConfig"<br><br>  The "python_add_library()" command now manages the "DEBUG_POSTFIX"<br>  target property based on the value of the "Python_DEBUG_POSTFIX"<br>  variable.<br><br><br>Generator Expressions<br>---------------------<br><br>* The "<LANG>_COMPILER_FRONTEND_VARIANT" family of generator<br>  expressions were added to access the value of the associated<br>  "CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT" variables.<br><br>* Link features, as used with the "LINK_LIBRARY" generator expression,<br>  gained the ability to have properties that describe their behavior<br>  by specifying the "CMAKE_LINK_LIBRARY_<FEATURE>_PROPERTIES" or<br>  "CMAKE_<LANG>_LINK_LIBRARY_<FEATURE>_PROPERTIES" variables.<br><br>* The "QUOTE" generator expression was added to evaluate to """.<br><br>* The "TARGET_PROPERTY" generator expression learned to evaluate<br>  custom transitive properties defined by new<br>  "TRANSITIVE_COMPILE_PROPERTIES" and "TRANSITIVE_LINK_PROPERTIES"<br>  target properties.<br><br>* The "TARGET_PROPERTY" generator expression now evaluates target<br>  properties "INTERFACE_LINK_OPTIONS", "INTERFACE_LINK_DIRECTORIES",<br>  and "INTERFACE_LINK_DEPENDS" correctly by following private<br>  dependencies of static libraries.  See policy "CMP0166".<br><br><br>CTest<br>-----<br><br>* The "ctest_submit()" command and "ctest -T Submit" step gained<br>  "TLSVersion" and "TLSVerify" options to control negotiation with<br>  "https://" URLs.  See the "CTEST_TLS_VERSION" and "CTEST_TLS_VERIFY"<br>  variables.<br><br><br>CPack<br>-----<br><br>* The "CPack Inno Setup Generator" is now available on non-Windows<br>  hosts.<br><br>* The "CPack NuGet Generator" can now generate dependency groups for<br>  framework-specific dependencies. The "CPACK_NUGET_PACKAGE_TFMS"<br>  variable was added to specify a list of target framework monikers<br>  (TFMs) for which groups should be generated.<br><br>* The "CPack WIX Generator" gained support for WiX Toolset v4. See the<br>  "CPACK_WIX_VERSION" variable.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* The "FindBoost" module has been removed by policy "CMP0167". Port<br>  projects to upstream Boost's "BoostConfig.cmake" package<br>  configuration file, for which "find_package(Boost)" now searches.<br><br>* Calling "FetchContent_Populate()" with just the name of a dependency<br>  is now deprecated. Projects should call<br>  "FetchContent_MakeAvailable()" instead. See policy "CMP0169".<br>  Calling "FetchContent_Populate()" with full population details<br>  rather than just a dependency name remains fully supported.<br><br>* The "Visual Studio 9 2008" generator has been removed.<br><br><br>Other Changes<br>=============<br><br>* The precompiled Windows ".msi" installers provided on <a href="http://cmake.org">cmake.org</a>,<br>  when performing a fresh installation, now modify the system-wide<br>  "PATH" by default. When replacing an existing installation of 3.30<br>  or later, the "PATH" modification preference is preserved by<br>  default.<br><br>* The official ".zip" source archive provided on <a href="http://cmake.org">cmake.org</a> now uses LF<br>  newlines, instead of CRLF newlines, for consistency with modern<br>  conventions.<br><br>* The durations printed after "Configuring done" and "Generating done"<br>  messages now reflect time spent in generator-specific steps, and in<br>  a code model evaluation step at the beginning of generation that was<br>  not previously captured.  Printed durations may appear longer than<br>  in previous versions of CMake, but are more accurate.<br><br>* "FetchContent" now prefers to populate content directly rather than<br>  using a separate sub-build. This may significantly improve configure<br>  times on some systems (Windows especially, but also on macOS when<br>  using the Xcode generator). "cmake --fresh" also forces the<br>  download, update, and patch steps of directly populated dependencies<br>  to be re-executed. Policy "CMP0168" provides backward compatibility<br>  for those projects that still rely on using a sub-build for content<br>  population.<br><br>* When "FETCHCONTENT_FULLY_DISCONNECTED" is set to true,<br>  "FetchContent_MakeAvailable()" and the single-argument form of<br>  "FetchContent_Populate()" require that the dependency's source<br>  directory has already been populated. CMake 3.29 and earlier did not<br>  check this requirement, but it is now enforced, subject to policy<br>  "CMP0170".<br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.30.0-rc1:<br><br>Brad King (4):<br>  ci: Update CMake version to 3.30.0-rc1<br>  Clang: Drop non-existent -fno-ansi-escape-codes flag<br>  Utilities/Release: Update MSI generation to use WIX 4<br>  CMake 3.30.0-rc2<br><br>Craig Scott (6):<br>  FetchContent,ExternalProject: Fix extra semicolons in step commands<br>  FetchContent: Fix typos in stamp/step file names<br>  Tests: Fix -direct variants of FetchContent<br>  Tests: RunCMake.FetchContent should not always force _deps removal<br>  FetchContent: Force cmake --fresh to re-execute direct population steps<br>  Auxiliary: Modernize bash completion for ctest and cpack<br><br></div>