<div dir="ltr">  I am proud to announce the second CMake 3.29 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.29">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">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">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 "PACKAGE_DEPENDENCY" option configures how "find_dependency()"<br>  calls are exported.  Its "TARGET" option's "XCFRAMEWORK_LOCATION"<br>  setting specifies the location of a ".xcframework" that can be<br>  substituted for an installed target.<br><br>* "install(EXPORT)" and "export(EXPORT)" learned a new<br>  "EXPORT_PACKAGE_DEPENDENCIES" argument, which can be used to<br>  generate "find_dependency()" calls based on what targets the<br>  exported targets depend on.<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><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 "PACKAGE_DEPENDENCY" option configures how "find_dependency()"<br>  calls are exported.  Its "TARGET" option's "XCFRAMEWORK_LOCATION"<br>  setting specifies the location of a ".xcframework" that can be<br>  substituted for an 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>* "install(EXPORT)" and "export(EXPORT)" learned a new<br>  "EXPORT_PACKAGE_DEPENDENCIES" argument, which can be used to<br>  generate "find_dependency()" calls based on what targets the<br>  exported targets depend on.<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 "EXPORT_FIND_PACKAGE_NAME" target property was added to allow<br>  targets to specify what package name to pass when exporting<br>  "find_dependency()" calls. This property is initialized with a new<br>  "CMAKE_EXPORT_FIND_PACKAGE_NAME" variable.<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_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>* "FetchContent_MakeAvailable()" now sets the<br>  "CMAKE_EXPORT_FIND_PACKAGE_NAME" variable for CMake projects.<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>Changes made since CMake 3.29.0-rc1:<br><br>Ben Boeckel (21):<br>  cmDyndepCollation: collapse full path before looking up<br>  Tests/CXXModules: support testing rebuild conditions<br>  cxxmodules: return failure from the collator when private usage is found<br>  Tests/CXXModules: test that objects depend on their modmap files<br>  cxxmodules: depend on the modmap contents<br>  cmNinjaTargetGenerator: use `emplace_back` for scanning deps<br>  Tests/CXXModules: test that objects depend on dependent modules json files<br>  cmNinjaTargetGenerator: scanning depends on the module metadata<br>  Tests/CXXModules: add a test to ensure that `restat` works for collation<br>  Ninja: make the collator rule use `restat = 1`<br>  Tests/CXXModules: document `CMake_TEST_MODULE_COMPILATION` items<br>  Tests/CXXModules: support building a project with `Ninja`<br>  Tests/CXXModules: add a test importing from a `Ninja` install<br>  cmGeneratorTarget: store synthetic targets in its cache<br>  Tests/CXXModules: add a test with transitive targets<br>  cmTarget: copy link libraries from the right properties<br>  Tests/CXXModules: test transitive modules usage<br>  cmExportFileGenerator: export link libraries as-is<br>  cmGeneratorTarget: discover synthetic targets recursively<br>  Tests/CXXModules: test `cxx_std_20` coming from a dependency<br>  Clang: detect -resource-dir for clang-scan-deps<br><br>Brad King (12):<br>  Tests: Remove unnecessary RunCMake.cmake_language expected result files<br>  cmake_language: Fix EXIT inside control flow blocks<br>  librhash: aligned_alloc is not available with glibc < 2.15<br>  Tests/CommandLength: Refactor test commands to reduce test run time<br>  ci: update to WiX 3.14.0.8606 release<br>  VS: Verify toolset version= field format more strictly<br>  VS: Fix '-T version=14.40' under VS 17.10 preview 1<br>  Tests: Fix BuildDepends on macOS arm64 without rosetta<br>  Help: Modernize BUILD_SHARED_LIBS documentation<br>  Tests: Update RunCMake.TargetObjects cmake_minimum_required version<br>  Restore support for TARGET_OBJECTS in link interfaces with unity builds<br>  CMake 3.29.0-rc2<br><br>Craig Scott (1):<br>  Help: Advise calling option(BUILD_SHARED_LIBS) early enough<br><br>Johannes Schultz (1):<br>  Help: Fix example for return command<br><br>Robert Maynard (1):<br>  Help: Explicitly discourage absolute install destinations<br><br>Ruslan Baratov (1):<br>  IPO: Support duplicate object names in large archives  <br></div>