<div dir="ltr"><div id="gmail-:1tq" class="gmail-Ar gmail-Au gmail-Ao"><div id="gmail-:1sg" class="gmail-Am gmail-aiL gmail-Al editable gmail-LW-avf gmail-tS-tW gmail-tS-tY" aria-label="Message Body" role="textbox" aria-multiline="true" tabindex="1" style="direction:ltr;min-height:376px" aria-controls=":2c9" aria-expanded="false">We are pleased to announce that CMake 3.28.0 is now available for download.<div><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.28" target="_blank">https://cmake.org/cmake/help/v3.28</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.28/release/3.28.html" target="_blank">https://cmake.org/cmake/help/v3.28/release/3.28.html</a><br><br>Some of the more significant changes in CMake 3.28 are:<br><br>* C++ 20 named modules are now supported by Ninja Generators and<br>  Visual Studio Generators for VS 2022 and newer, in combination with<br>  the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang<br>  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and<br>  newer. See "cmake-cxxmodules(7)" for details.<br><br>* "HIP" language code may now be compiled for NVIDIA GPUs using the<br>  NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.<br><br>* On Apple platforms, ".xcframework" folders are now supported.<br><br>* The "exec_program()" command, which has been deprecated since CMake<br>  3.0, has been removed by policy "CMP0153". Use the<br>  "execute_process()" command instead.<br><br>* Generated files, in targets using File Sets, are now considered<br>  private by default.  Generated public headers must be specified<br>  using file sets.  This allows Ninja Generators to produce more<br>  efficient build graphs.  See policy "CMP0154".<br><br>* The "find_library()", "find_path()", and "find_file()" commands no<br>  longer search in installation prefixes derived from the "PATH"<br>  environment variable.  This behavior was added in CMake 3.3 to<br>  support MSYS and MinGW ("MSYSTEM") development environments on<br>  Windows, but it can search undesired prefixes that happen to be in<br>  the "PATH" for unrelated reasons.  Users who keep some<br>  "<prefix>/bin" directories in the "PATH" just for their tools do not<br>  necessarily want any corresponding "<prefix>/lib" or<br>  "<prefix>/include" directories searched. The behavior was reverted<br>  for non-Windows platforms by CMake 3.6. Now it has been reverted on<br>  Windows platforms too.<br><br><br>CMake 3.28 Release Notes<br>************************<br><br>Changes made since CMake 3.27 include the following.<br><br><br>New Features<br>============<br><br><br>Languages<br>---------<br><br>* C++ 20 named modules are now supported by Ninja Generators and<br>  Visual Studio Generators for VS 2022 and newer, in combination with<br>  the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang<br>  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and<br>  newer. See "cmake-cxxmodules(7)" for details.<br><br>* "HIP" language code may now be compiled for NVIDIA GPUs using the<br>  NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.<br><br><br>Platforms<br>---------<br><br>* On Apple platforms, ".xcframework" folders are now supported:<br><br>  * The "find_library()" command now finds ".xcframework" folders.<br><br>  * The "target_link_libraries()" command now supports linking against<br>    a ".xcframework" folder.<br><br>  * The "IMPORTED_LOCATION" target property of an imported library<br>    target may now be the path to a ".xcframework" folder.<br><br>* Apple visionOS and its "xros" and "xrsimulator" SDKs are now<br>  supported. Compiling for Apple visionOS can be requested by setting<br>  "CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for iOS,<br>  tvOS, visionOS, or watchOS for more information.<br><br><br>Presets<br>-------<br><br>* "cmake-presets(7)" files now support schema version "8". It adds<br>  support for a "$schema" field.<br><br><br>Compilers<br>---------<br><br>* Cray Clang-based compilers are now supported with "compiler id"<br>  "CrayClang".<br><br>* The OrangeC compiler is now supported with "compiler id" "OrangeC".<br><br><br>Commands<br>--------<br><br>* The "add_custom_command()" and "add_custom_target()" commands gained<br>  a "JOB_SERVER_AWARE" option.<br><br>* The "cmake_host_system_information()" command gained a<br>  "MSYSTEM_PREFIX" query for the installation prefix of a MSYS or<br>  MinGW development environment on Windows hosts.<br><br>* The "set_property()" command "TEST" mode gained a "DIRECTORY" option<br>  to set properties on tests in other directories.<br><br>* The "set_tests_properties()" command gained a "DIRECTORY" option to<br>  set properties on tests in other directories.<br><br>* The "get_property()" command "TEST" mode gained a "DIRECTORY" option<br>  to get properties on tests in other directories.<br><br>* The "get_test_property()" command gained a "DIRECTORY" option to get<br>  properties on tests in other directories.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added<br>  to initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.<br><br>* The "CMAKE_HIP_PLATFORM" variable was added to specify the GPU<br>  platform for which HIP language sources are to be compiled ("amd" or<br>  "nvidia").<br><br><br>Properties<br>----------<br><br>* On imported shared libraries, the "IMPORTED_IMPLIB" target property<br>  may now be used without "IMPORTED_LOCATION". This can be used to<br>  represent a stub library whose location should not be added as a<br>  runtime search path to dependents that link it.<br><br>* The "IMPORTED_LOCATION" property of a macOS framework may now be a<br>  path to the ".framework" folder itself.<br><br>* The "XCODE_EMBED_RESOURCES" target property was added to tell the<br>  "Xcode" generator what targets to put in the "Embed Resources" build<br>  phase.<br><br><br>Modules<br>-------<br><br>* The "ExternalProject" module now includes the<br>  "BUILD_JOB_SERVER_AWARE" option for the "ExternalProject_Add()"<br>  command. This option enables the integration of the GNU Make job<br>  server when using an explicit "BUILD_COMMAND" with certain Makefile<br>  Generators. Additionally, the "ExternalProject_Add_Step()" command<br>  has been updated to support the new "JOB_SERVER_AWARE" option.<br><br>* The "ExternalProject" module now declares "BYPRODUCTS" for the<br>  downloaded file for generated "download" steps. Previously, if<br>  multiple external projects downloaded to the same file, hash<br>  verification could fail. Now, when using the Ninja Generators, this<br>  scenario is detected and Ninja will raise an error stating that<br>  multiple rules generate the same file.<br><br>* The "FetchContent" module's "FetchContent_Declare()" command gained<br>  an "EXCLUDE_FROM_ALL" option, which propagates through to the<br>  "add_subdirectory()" call made by "FetchContent_MakeAvailable()" for<br>  the dependency.<br><br>* The "FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to select<br>  static libraries.<br><br>* The "FindEXPAT" module gained an "EXPAT_USE_STATIC_LIBS" hint to<br>  select static libraries.<br><br>* The "FindPkgConfig" module "pkg_get_variable()" command gained a<br>  "DEFINE_VARIABLES" option to pass variables to "pkg-config".<br><br><br>Generator Expressions<br>---------------------<br><br>* The "generator expressions" "$<IF:...>", "$<AND:...>", and<br>  "$<OR:...>" short-circuit to avoid unnecessary evaluation of<br>  parameters.<br><br><br>CTest<br>-----<br><br>* CTest may now take a dynamically-generated resource spec file, which<br>  can be specified by the "GENERATED_RESOURCE_SPEC_FILE" test<br>  property.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* The "exec_program()" command, which has been deprecated since CMake<br>  3.0, has been removed by policy "CMP0153". Use the<br>  "execute_process()" command instead.<br><br>* The "Visual Studio 11 2012" generator has been removed.<br><br>* The "Visual Studio 12 2013" generator is now deprecated and will be<br>  removed in a future version of CMake.<br><br>* The "IOS_INSTALL_COMBINED" target property and corresponding<br>  "CMAKE_IOS_INSTALL_COMBINED" variable have been deprecated. Their<br>  functionality does not make sense on Apple Silicon hosts.<br><br>* The "Xcode" generator will now issue a fatal error if the Legacy<br>  Build System has been selected for Xcode 14 and newer. Those Xcode<br>  versions dropped support for the Legacy Build System and expect the<br>  project to be set-up for their current Build System.<br><br><br>Other Changes<br>=============<br><br>* Generated files, in targets using File Sets, are now considered<br>  private by default.  Generated public headers must be specified<br>  using file sets.  This allows Ninja Generators to produce more<br>  efficient build graphs.  See policy "CMP0154".<br><br>* The "find_library()", "find_path()", and "find_file()" commands no<br>  longer search in installation prefixes derived from the "PATH"<br>  environment variable.  This behavior was added in CMake 3.3 to<br>  support MSYS and MinGW ("MSYSTEM") development environments on<br>  Windows, but it can search undesired prefixes that happen to be in<br>  the "PATH" for unrelated reasons.  Users who keep some<br>  "<prefix>/bin" directories in the "PATH" just for their tools do not<br>  necessarily want any corresponding "<prefix>/lib" or<br>  "<prefix>/include" directories searched. The behavior was reverted<br>  for non-Windows platforms by CMake 3.6. Now it has been reverted on<br>  Windows platforms too.<br><br>  One may set the "CMAKE_PREFIX_PATH" environment variable with a<br>  semicolon-separated list of prefixes that are to be searched.<br><br>* When using MinGW tools in a "MSYSTEM" environment on Windows, the<br>  "$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now added<br>  to "CMAKE_SYSTEM_PREFIX_PATH".<br><br>* The precompiled Linux "x86_64" binaries provided on <a href="http://cmake.org/" target="_blank">cmake.org</a> now<br>  require GLIBC 2.17 or higher.<br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.28.0-rc6:<br><br>Ben Boeckel (8):<br>  cmFileTimes: return status codes from APIs<br>  cmFileCopier: remember error statuses and get their strings<br>  errors: avoid constructing a stream before getting the last error<br>  Tests/CXXModules: add a test which scans a PCH-using source<br>  cmLocalGenerator: prevent scanning of PCH source files<br>  cmNinjaTargetGenerator: PCH files do not need dyndep<br>  Tests/CXXModules: import from an internal partition<br>  Tests/CXXModules: enhance `internal-partitions` test<br><br>Brad King (5):<br>  cmFileLockResult: Fix inclusion of windows.h when cross-compiling<br>  LLVMFlang: Fix MSVC ABI debug information format options<br>  cmGeneratorTarget: Add helper to check for known runtime artifact<br>  cmComputeLinkInformation: Restore soname lookup for non-imported targets<br>  CMake 3.28.0<br><br>Kyle Edwards (2):<br>  libuv: win: honor NoDefaultCurrentDirectoryInExePath env var<br>  libuv: win/spawn: run executables with no file extension<br><br>Marc Chevrier (1):<br>  cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10<br><br>namniav (1):<br>  cmCxxModuleMapper: Fix transitive requirements computation</div></div></div></div>