<div dir="ltr">I am proud to announce the third CMake 3.25 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.25">https://cmake.org/cmake/help/v3.25</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.25/release/3.25.html">https://cmake.org/cmake/help/v3.25/release/3.25.html</a><br><br>Some of the more significant changes in CMake 3.25 are:<br><br><br>* The "find_file()", "find_path()", "find_library()", and<br>  "find_program()" commands gained a "VALIDATOR" option to specify a<br>  function to be called for each candidate item to validate it.<br><br>* The "try_compile()" and "try_run()" commands gained new signatures<br>  that more consistently use keyword dispatch and do not require a<br>  binary directory to be specified.  Additionally, these signatures<br>  use a unique directory for each invocation, which allows multiple<br>  outputs to be preserved when using "cmake --debug-trycompile".<br><br>* The "add_subdirectory()" command gained a "SYSTEM" option to enable<br>  the "SYSTEM" directory property in the subdirectory.<br><br>* The "block()" and "endblock()" commands were added to manage<br>  specific scopes (policy or variable) for a contained block of<br>  commands.<br><br>* The "return()" command gained a "PROPAGATE" option to propagate<br>  variables to the scope to which control returns. See policy<br>  "CMP0140".<br><br>* The "BSD" and "CMAKE_HOST_BSD" variables are now set to a string<br>  value when the target or host system is BSD, respectively.<br><br>* The "LINUX" and "CMAKE_HOST_LINUX" variables are now set to true<br>  when the target or host system is Linux, respectively.<br><br>* The "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT" variable and<br>  "MSVC_DEBUG_INFORMATION_FORMAT" target property were introduced to<br>  select the debug information format for compilers targeting the MSVC<br>  ABI. See policy "CMP0141".<br><br><br>CMake 3.25 Release Notes<br>************************<br><br>Changes made since CMake 3.24 include the following.<br><br><br>New Features<br>============<br><br><br>Presets<br>-------<br><br>* The "cmake-presets(7)" schema version has been bumped to "6".<br><br>* The "cmake-presets(7)" format now supports a "packagePresets" field<br>  to specify presets for "cpack --preset".<br><br>* The "cmake-presets(7)" format now supports a "workflowPresets" field<br>  to specify presets for "cmake --workflow".<br><br>* The "cmake-presets(7)" format now supports an "outputJUnitFile" field<br>   to specify JUnit output in test presets<br><br><br>Languages<br>---------<br><br>* The "Compile Features" functionality is now aware of C++26, and<br>  defines a "cxx_std_26" meta-feature. C++26 compiler modes may also<br>  be specified via the "CXX_STANDARD", "CUDA_STANDARD",<br>  "HIP_STANDARD", or "OBJCXX_STANDARD" target properties.<br><br>* "CUDA" language support now includes device link-time optimization<br>  when using "nvcc".  The "CMAKE_INTERPROCEDURAL_OPTIMIZATION"<br>  variable and the associated "INTERPROCEDURAL_OPTIMIZATION" target<br>  property will activate device LTO.<br><br><br>Command-Line<br>------------<br><br>* A "cmake --workflow --preset" mode was added to drive sequences of<br>  configure, build, test, and package operations through a single<br>  command.<br><br>* The "cmake -E capabilities" command gained a new "tls" field that<br>  tells whether or not TLS is enabled.<br><br>* The "cmake -E env" command-line tool gained a "--modify" flag to<br>  support "ENVIRONMENT_MODIFICATION" operations.<br><br>* The "cmake --debug-trycompile" option now prints log messages<br>  reporting the directory in which each try-compile check is done.<br><br><br>Compilers<br>---------<br><br>* Support for the Tasking compiler toolsets (SmartCode, TriCore,<br>  Standalone: ARM, MCS, 8051) was added with compiler id "Tasking".<br>  See the "CMAKE_TASKING_TOOLSET" variable.<br><br><br>Commands<br>--------<br><br>* The "add_subdirectory()" command gained a "SYSTEM" option to enable<br>  the "SYSTEM" directory property in the subdirectory.<br><br>* The "block()" and "endblock()" commands were added to manage<br>  specific scopes (policy or variable) for a contained block of<br>  commands.<br><br>* The "cmake_language()" command gained a new "GET_MESSAGE_LOG_LEVEL"<br>  sub-command.  It can be used to query the current message logging<br>  level.<br><br>* The "find_file()", "find_path()", "find_library()", and<br>  "find_program()" commands gained a "VALIDATOR" option to specify a<br>  function to be called for each candidate item to validate it.<br><br>* The "find_package()" command now considers paths of the form<br>  "<prefix>/<name>*/(cmake|CMake)/<name>*/" when searching for package<br>  configuration files.<br><br>* The "return()" command gained a "PROPAGATE" option to propagate<br>  variables to the scope to which control returns. See policy<br>  "CMP0140".<br><br>* The "try_compile()" and "try_run()" commands gained new signatures<br>  that more consistently use keyword dispatch and do not require a<br>  binary directory to be specified.  Additionally, these signatures<br>  use a unique directory for each invocation, which allows multiple<br>  outputs to be preserved when using "cmake --debug-trycompile".<br><br>* The "try_compile()" and "try_run()" commands gained the option<br>  "NO_CACHE" to store results in normal variables.<br><br>* The "try_run()" command gained "RUN_OUTPUT_STDOUT_VARIABLE" and<br>  "RUN_OUTPUT_STDERR_VARIABLE" options to capture stdout and stderr<br>  separately from the output of the compiled program.<br><br><br>Variables<br>---------<br><br>* The "BSD" and "CMAKE_HOST_BSD" variables are now set to a string<br>  value when the target or host system is BSD, respectively.<br><br>* The "LINUX" and "CMAKE_HOST_LINUX" variables are now set to true<br>  when the target or host system is Linux, respectively.<br><br>* The "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT" variable and<br>  "MSVC_DEBUG_INFORMATION_FORMAT" target property were introduced to<br>  select the debug information format for compilers targeting the MSVC<br>  ABI. See policy "CMP0141".<br><br>* The "CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION" variable and<br>  corresponding "XCODE_SCHEME_ENABLE_GPU_API_VALIDATION" target<br>  property were added to tell the "Xcode" generator what to put in the<br>  scheme's "Metal: API Validation" setting.<br><br>* The "CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION" variable and<br>  corresponding "XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION" target<br>  property were added to tell the "Xcode" generator what to put in the<br>  scheme's "Metal: Shader Validation" setting.<br><br>* The "CMAKE_XCODE_SCHEME_LAUNCH_MODE" variable and corresponding<br>  "XCODE_SCHEME_LAUNCH_MODE" target property were added to tell the<br>  "Xcode" generator what to put in the scheme's "Launch" mode setting.<br><br>* The "CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION" variable and<br>  corresponding "XCODE_SCHEME_LAUNCH_CONFIGURATION" target property<br>  were added to tell the "Xcode" generator what configuration to put<br>  in the scheme's Launch action.<br><br><br>Properties<br>----------<br><br>* The "<LANG>_COMPILER_LAUNCHER" target property now supports<br>  "generator expressions".<br><br>* The "EXPORT_NO_SYSTEM" target property was added to specify that<br>  "install(EXPORT)" and "export()" commands will generate an imported<br>  target with "SYSTEM" property "OFF".<br><br>* The "SYSTEM" target property was added to specify whether a target<br>  should be treated as a system library (i.e. its include directories<br>  are automatically "SYSTEM" when compiling consumers).  If not set,<br>  the default is the previous behavior: on for imported targets and<br>  off for other targets.<br><br>* The "SYSTEM" directory property was added to initialize the "SYSTEM"<br>  target property for targets created in that directory.<br><br><br>Modules<br>-------<br><br>* The "FetchContent" module "FetchContent_Declare()" command gained a<br>  "SYSTEM" option to enable the "SYSTEM" directory property in the<br>  subdirectory.<br><br>* The "FindCUDAToolkit" module now provides a target for nvtx3 for<br>  CUDA 10.0+, which supersedes nvToolsExt. A deprecation warning is<br>  emitted when using "nvToolsExt" if the project requires CMake 3.25<br>  and CUDA 10.0+ is used.<br><br>* The "FindDoxygen" module's version handling has been improved:<br><br>  * Multiple candidate installations will now be considered, if<br>    needed, to satisfy version constraints.  Previously, only the<br>    first one encountered would be considered.<br><br>  * Version ranges are supported.<br><br>  * Variations in the version format reported by Doxygen are now<br>    tolerated (e.g. a trailing git commit hash).<br><br>* The "FindOpenAL" module now provides an imported target.<br><br>* The "FindOpenSP" module was added to find the OpenSP library.<br><br>* The "FindVulkan" module gained support for new components:<br><br>  "dxc"<br>     DirectX Shader Compiler.<br><br>  "volk"<br>     Volk open-source vulkan meta-loader.<br><br><br>CPack<br>-----<br><br>* The "CPack Archive Generator" gained a new<br>  "CPACK_ARCHIVE_FILE_EXTENSION" variable to control the package file<br>  name extension.<br><br>* The "CPack NSIS Generator" gained two new variables<br>  "CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS" and<br>  "CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS" to provide arguments to the<br>  nsis executable invocation.<br><br>* The "CPack" module gained the "CPACK_READELF_EXECUTABLE",<br>  "CPACK_OBJCOPY_EXECUTABLE", and "CPACK_OBJDUMP_EXECUTABLE" variables<br>  to control the locations of binutils used by "cpack(1)".<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* The "IMPORTED_NO_SYSTEM" target property has been deprecated in<br>  favor of "SYSTEM" and "EXPORT_NO_SYSTEM".<br><br>* The "Visual Studio 10 2010" generator has been removed.<br><br>* The "Visual Studio 11 2012" generator is now deprecated and will be<br>  removed in a future version of CMake.<br><br><br>Other Changes<br>=============<br><br>* On Windows, when targeting the MSVC ABI, the "find_library()"<br>  command now accepts ".a" file names after first considering ".lib".<br>  This is symmetric with existing behavior when targeting the GNU ABI,<br>  in which the command accepts ".lib" file names after first<br>  considering ".a".<br><br>* The "SSL_CERT_FILE" and "SSL_CERT_DIR" environment variables can now<br>  be used to override where to find certificate authorities for<br>  TLS/SSL operations.<br><br>* If "<LANG>_CLANG_TIDY" includes a "-p" argument, the full compiler<br>  command line is no longer appended after "--".<br><br>* The "Xcode" generator no longer adds the per-config suffix<br>  "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" to library search<br>  paths. See policy "CMP0142".<br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.25.0-rc2:<br><br>Alex Turbov (3):<br>  Help: Reformat find_package search paths as Sphinx tables<br>  Help: Mention CMake version for a recently-added `find_package` search path<br>  Help: Add more CLI `:option:` references to various pages<br><br>Anthony Roberts (1):<br>  Tests: Fix RunCMake.VsDotnetSdk with VS >= 17.3 on ARM64<br><br>Aurelien Regat-Barrel (1):<br>  file(DOWNLOAD): Fix LOG with EXPECTED_HASH on download failure<br><br>Brad King (21):<br>  Tests: Explicitly allow usage of git file-based protocol in test cases<br>  cm/filesystem: Fix crash with pre-C++11 std::string GNU ABI in C++17<br>  Tests: Avoid running C++11 test on GNU < 4.7<br>  Xcode: Evaluate Swift compile definitions separately<br>  VS: Fix crash finding vswhere on 32-bit Windows<br>  Ninja: Restore support for non-ascii paths on Windows with ninja<=1.10<br>  Tests: Add case for ninja with non-ascii chars<br>  Xcode: Revert "Don't set INSTALL_PATH unless target is SHARED_LIBRARY"<br>  FindGLUT: Fix regression when pkg-config is not available<br>  Xcode: Put object files in a place that Xcode cleans<br>  cmGeneratedFileStream: Add support for a temporary alternate encoding<br>  cm_codecvt: Add support for the Windows console output code page<br>  Ninja: Match showIncludes dependencies using console output code page<br>  cmGeneratedFileStream: Drop unused WriteRaw method<br>  cmLocalGenerator: Factor out helper to compute MSVC_DEBUG_INFORMATION_FORMAT<br>  cmLocalGenerator: Clarify name of local PDB type variable<br>  Tests: Drop redundant project init from RunCMake.PrecompileHeaders cases<br>  CMP0141: Fix PCH REUSE_FROM under policy NEW behavior<br>  curl: Update script to get curl 7.86.0<br>  curl: Set build options the way we need for CMake<br>  CMake 3.25.0-rc3<br><br>Craig Scott (4):<br>  Help: Fix trivial typos related to presets<br>  Help: Use array consistently in presets manual<br>  Help: State default preset strategy for architecture and toolset<br>  Help: Minor formatting and cross-ref cleanup for <CONFIG>_POSTFIX<br><br>Curl Upstream (1):<br>  curl 2022-10-26 (cd95ee9f)<br><br>Kyle Edwards (6):<br>  cmake: Support --list-presets=workflow<br>  CPack: Require no argument for --trace and --trace-expand<br>  cmake --workflow: print usage message<br>  cmake --workflow: print usage and exit on unrecognized argument<br>  cmake::Workflow: Refactor to use enum class argument<br>  cmake --workflow: add --fresh option<br><br>Letu Ren (1):<br>  Linux: Avoid finding libraries using lib64 on ArchLinux<br><br>Markus Ferrell (1):<br>  Tutorial: Restore USE_MYMATH in place of MY_MATH<br><br>Michael Hirsch (1):<br>  Help: cmake(1), ctest(1), versionadded for key flags<br><br>Mis, Piotr (1):<br>  VS: Fix MSBuild property for nostdlib flag<br><br>Mojca Miklavec (1):<br>  CPack/NSIS: Document BOM mark for UTF-8 encoded LICENSE file<br><br>Robert Maynard (1):<br>  FindCUDAToolkit: Add nvptxcompiler_static dependency on Threads::Threads<br><br>Sebastian Maisch (1):<br>  VS: Fix paths in multi-target SDK-style projects<br><br>Werner, Joerg (1):<br>  cmGlobalVisualStudioGenerator: Fix compiling as C++20 in VS 2022<br><br>مهدي شينون (Mehdi Chinoune) (1):<br>  LLVMFlang: Add a required line to define linking rules on Windows<br></div>