<div dir="ltr">I am proud to announce the fourth CMake 3.29 release candidate.<br>  <a href="https://cmake.org/download/" target="_blank">https://cmake.org/download/</a><br><br>Documentation is available at:<br>  <a href="https://cmake.org/cmake/help/v3.29" target="_blank">https://cmake.org/cmake/help/v3.29</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.29/release/3.29.html" target="_blank">https://cmake.org/cmake/help/v3.29/release/3.29.html</a><br><br>Release milestone is available at:<br>  <a href="https://gitlab.kitware.com/cmake/cmake/-/milestones/136" target="_blank">https://gitlab.kitware.com/cmake/cmake/-/milestones/136</a><br><br>Some of the more significant changes in CMake 3.29 are:<br><br>* The LLVM/Clang GNU-like frontend on Windows ("clang++") may now be<br>  used to compile "CUDA" language sources.<br><br>* TI Clang-based compilers are now supported with compiler id<br>  "TIClang".<br><br>* The "cmake_language(EXIT)" sub-command was added to terminate "cmake<br>  -P" scripts with a specified exit code.<br><br>* The "export(SETUP)" sub-command was added to configure export sets.<br>  Its "TARGET" option's "XCFRAMEWORK_LOCATION" setting specifies the<br>  location of a ".xcframework" that can be substituted for an<br>  installed target.<br><br>* The "CMAKE_LINKER_TYPE" variable and corresponding "LINKER_TYPE"<br>  target property were added to specify what linker to use with some<br>  toolchains.<br><br>* A "CMAKE_TEST_LAUNCHER" variable and corresponding "TEST_LAUNCHER"<br>  target property were added to specify a launcher to be used by<br>  executable targets when invoked by tests added by the "add_test()"<br>  command.<br><br>* The "ctest -j" option may now be given without a value to let ctest<br>  choose a default level of parallelism, or with "0" to let ctest use<br>  unbounded parallelism.  The corresponding "CTEST_PARALLEL_LEVEL"<br>  environment variable, if set to the empty string, is now equivalent<br>  to passing "-j" with no value.<br><br><br>CMake 3.29 Release Notes<br>************************<br><br>Changes made since CMake 3.28 include the following.<br><br><br>New Features<br>============<br><br><br>Command-Line<br>------------<br><br>* "cmake(1)" "-E cat" can now print the standard input by passing the<br>  "-" argument.<br><br><br>Generators<br>----------<br><br>* Visual Studio Generators now support selecting between the Intel<br>  oneAPI Fortran compiler ("ifx") and the Intel classic Fortran<br>  compiler ("ifort") using a "fortran=" field in<br>  "CMAKE_GENERATOR_TOOLSET".<br><br><br>File-Based API<br>--------------<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "version" field has<br>  been updated to 2.7.<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "target" object gained<br>  a new "launchers" field.<br><br><br>Compilers<br>---------<br><br>* The LLVM/Clang GNU-like frontend on Windows ("clang++") may now be<br>  used to compile "CUDA" language sources.<br><br>* Compilers targeting the GNU ABI on Windows (MinGW) may now be used<br>  to compile Objective C ("OBJC") and Objective C++ ("OBJCXX").  These<br>  include GNU compilers ("gcc" and "g++") and the LLVM/Clang GNU-like<br>  frontends ("clang" and "clang++").<br><br>* TI Clang-based compilers are now supported with compiler id<br>  "TIClang".<br><br><br>Commands<br>--------<br><br>* The add_custom_command(TARGET) signature now supports adding build<br>  events through Alias Targets.<br><br>* The "cmake_language(EXIT)" sub-command was added to terminate "cmake<br>  -P" scripts with a specified exit code.<br><br>* The "export(SETUP)" sub-command was added to configure export sets.<br>  Its "TARGET" option's "XCFRAMEWORK_LOCATION" setting specifies the<br>  location of a ".xcframework" that can be substituted for an<br>  installed target.<br><br>* The "if()" command gained new tests "IS_READABLE", "IS_WRITABLE" and<br>  "IS_EXECUTABLE" to check file or directory permissions.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_INSTALL_PREFIX" environment variable was added to provide<br>  a default value for the "CMAKE_INSTALL_PREFIX" variable.<br><br>* The "CMAKE_LINKER_TYPE" variable and corresponding "LINKER_TYPE"<br>  target property were added to specify what linker to use with some<br>  toolchains.<br><br>* The "CMAKE_<LANG>_COMPILER_LINKER",<br>  "CMAKE_<LANG>_COMPILER_LINKER_ID",<br>  "CMAKE_<LANG>_COMPILER_LINKER_VERSION" and<br>  "CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT" variables were added<br>  to describe the linker used by the language's link step.<br><br>* The "CMAKE_PROJECT_INCLUDE", "CMAKE_PROJECT_INCLUDE_BEFORE",<br>  "CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE", and "CMAKE_PROJECT_<PROJECT-<br>  NAME>_INCLUDE_BEFORE" variables learned to support a semicolon-<br>  separated list of CMake language files to be included sequentially.<br>  These variables can also reference module names to be found in<br>  "CMAKE_MODULE_PATH" or builtin to CMake.<br><br>* The "CMAKE_SKIP_TEST_ALL_DEPENDENCY" variable was added to control<br>  whether the "test" (or "RUN_TESTS") buildsystem target depends on<br>  the "all" (or "ALL_BUILD") target.<br><br>* A "CMAKE_TEST_LAUNCHER" variable and corresponding "TEST_LAUNCHER"<br>  target property were added to specify a launcher to be used by<br>  executable targets when invoked by tests added by the "add_test()"<br>  command.<br><br><br>Properties<br>----------<br><br>* The "CROSSCOMPILING_EMULATOR" target property now supports<br>  "generator expressions".<br><br>* The "UNITY_BUILD" target property now supports the Objective C<br>  ("OBJC") and Objective C++ ("OBJCXX") languages.<br><br>* The "XCODE_EMBED_XPC_SERVICES" target property was added to tell the<br>  "Xcode" generator what targets to put in the "Embed XPC Resources"<br>  build phase.<br><br><br>Modules<br>-------<br><br>* The "CMakePackageConfigHelpers" module gained new<br>  "generate_apple_platform_selection_file()" and<br>  "generate_apple_architecture_selection_file()" functions, which can<br>  be used to generate a file that includes another Apple-platform-<br>  specific file or the includes an architecture-specific<br>  implementation of a package for an Apple platform, respectively.<br><br>* The "FindOpenGL" module learned to find a GLU include directory<br>  different than the GL include directory.  A new<br>  "OPENGL_INCLUDE_DIRS" result variable provides all include<br>  directories.<br><br><br>CTest<br>-----<br><br>* "ctest(1)" gained a "--http-header" option to add custom headers on<br>  submission to CDash.<br><br>* "ctest(1)" gained the "--tests-from-file" and "--exclude-from-file"<br>  options to run or exclude tests named in a file.<br><br>* "ctest(1)" now supports job server integration on POSIX systems.<br><br>* The "ctest -j" option may now be given without a value to let ctest<br>  choose a default level of parallelism, or with "0" to let ctest use<br>  unbounded parallelism.  The corresponding "CTEST_PARALLEL_LEVEL"<br>  environment variable, if set to the empty string, is now equivalent<br>  to passing "-j" with no value.<br><br>* The "ctest_test()" command gained options "INCLUDE_FROM_FILE" and<br>  "EXCLUDE_FROM_FILE" to run or exclude tests named in a file.<br><br><br>CPack<br>-----<br><br>* The "CPack DEB Generator" "CPACK_DEBIAN_FILE_NAME" variable may now<br>  be set without any suffix, and the ".deb" suffix will be added<br>  automatically.<br><br>* The "CPack RPM Generator" "CPACK_RPM_FILE_NAME" variable may now be<br>  set without any suffix, and the ".rpm" suffix will be added<br>  automatically.<br><br>* The "CPack WIX Generator" gained a new variable,<br>  "CPACK_WIX_INSTALL_SCOPE", to control the "InstallScope" property of<br>  WiX MSI installers.<br><br><br>Other Changes<br>=============<br><br>* CMake learned to de-duplicate libraries on link lines based on<br>  linker capabilities.  See policy "CMP0156".<br><br>* The "add_test()" command now honors "CMAKE_CROSSCOMPILING_EMULATOR"<br>  only when cross-compiling. See policy "CMP0158".<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>* On Windows, when targeting the MSVC ABI, the "find_library()"<br>  command now considers ".dll.lib" file names before ".lib".  This is<br>  the default suffix for DLL import libraries created by Rust<br>  toolchains for the MSVC ABI.<br><br>* The "Ninja" and "NMake Makefiles" generators now use the<br>  "-external:I" flag for system includes when using IntelLLVM as of<br>  version 2021.4. The "-external:W0" flag is also used as of version<br>  2022.2.<br><br>* The "create_test_sourcelist()" command now provides a full path to<br>  the generated driver source file.<br><br>* The "CPACK_PRODUCTBUILD_DOMAINS" variable now defaults to true. See<br>  policy "CMP0161".<br><br>* The "CPack WIX Generator" now produces WiX MSI installers that<br>  create start menu and uninstall entries for all users by default, as<br>  documented by the "CPACK_WIX_INSTALL_SCOPE" variable "perMachine"<br>  value.  Previously, without a custom WiX template, it produced<br>  installers that would only create start menu and uninstall entries<br>  for the current user, even though they install for all users.<br><br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.29.0-rc3:<br><br>Adrian Pop (1):<br>  GET_RUNTIME_DEPENDENCIES: Allow more whitespace before objdump's "DLL Name:"<br><br>Alexander Neumann (1):<br>  ASM_MARMASM: Remove broken partial support for preprocessor defines<br><br>Ben Boeckel (1):<br>  Tests/CXXModules: add a test using `TARGET_OBJECTS` from modules<br><br>Brad King (20):<br>  Tests: Generalize ctest tests-from-file test cases<br>  ctest: Exit with failure when tests-from-file input is missing<br>  Tests: Make ctest tests-from-file expected output more precise<br>  ctest: Honor tests-from-file options with empty input<br>  ctest: Remove unnecessary and ambiguous tests-from-file comment syntax<br>  Help: Improve ctest tests-from-file documentation wording and wrapping<br>  Tests: Convert CTestTestSerialOrder to RunCMake.ctest_test case<br>  Tests: Convert CTestTestSkipReturnCode to RunCMake.ctest_test case<br>  Tests: Remove unnecessary parallel suppression from CTestCoverageCollectGCOV<br>  cmCTestMultiProcessHandler: Modernize member initialization<br>  ctest: Allow passing -j without value to choose a contextual default<br>  install(EXPORT): Drop REQUIRED from exported find_dependency calls<br>  Tests: Update RunCMake.CompileFeatures for Xcode 15.3<br>  Tests: Update RunCMake.CheckCompilerFlag for Xcode 15.3<br>  gitlab-ci: update macOS jobs to use Xcode 15.3<br>  LinkerId: Update detection of linker tool for Xcode 15.3<br>  EXPORT_PACKAGE_DEPENDENCIES: Add experimental feature gate<br>  Autogen: Restore target-ordering dependencies in Makefiles with DEPFILE<br>  cmQtAutoGenInitializer: De-duplicate autogen/timestamp target depend logic<br>  CMake 3.29.0-rc4<br><br>Charlie Savage (2):<br>  FindRuby: Add support for 3.3<br>  FindRuby: Fix finding Ruby 3.1+ on Windows<br><br>Craig Scott (1):<br>  FetchContent: Don't leak temporary variable and restore var robustly<br><br>Marc Chevrier (4):<br>  LINKER_TYPE: Document that linker tool should be in the PATH<br>  LINKER_TYPE: fix spelling error in message<br>  LINKER_TYPE: Support MOLD only on GCC versions that support it<br>  Apple Text Based Stubs: should be usage in subdirectories<br><br>scivision (1):<br>  Help: Convert http URLs to https<br></div>