<div dir="ltr">I am proud to announce the third 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 "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-rc2:<br><br>Ben Boeckel (6):<br>  cmGeneratorTarget: collapse paths before querying the fileset cache<br>  CMakeDetermineCompilerId: use `_ARG1` to query the clang resource dir<br>  Help/file: mention the working directory for `ARCHIVE_EXTRACT`<br>  cmExportFileGenerator: only export include paths for HEADERS file sets<br>  Help/add_custom_command: fix verb grammo<br>  cmImportedCxxModuleInfo: remove unused pointer field<br><br>Brad King (7):<br>  Help: Modernize create_test_sourcelist documentation<br>  Help: Document create_test_sourcelist source path convention<br>  FindOpenMP: Restore support for Intel compilers on Windows<br>  ci: Enable FindOpenMP tests in Intel nightly CI jobs on Windows<br>  Tests/RunCMake/CXXModules: Update VS circular error message<br>  FindTIFF: Fix name of upstream TIFF cmake package<br>  CMake 3.29.0-rc3<br><br>Evan Wilde (1):<br>  Swift: Ninja: Pass module name to all swift builds<br><br>Matthias Isele (1):<br>  FindOpenSSL: Update layout for Shining Light Productions package on Windows<br></div>