<div dir="ltr">I am proud to announce the second CMake 3.23 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.23" target="_blank">https://cmake.org/cmake/help/v3.23</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.23/release/3.23.html" target="_blank">https://cmake.org/cmake/help/v3.23/release/3.23.html</a><br><br>Some of the more significant changes in CMake 3.23 are:<br><br>* "cmake-presets(7)" files now have an optional "include" field, which<br>  allows the files to include other files.<br><br>* The Visual Studio Generators for VS 2019 and above learned to<br>  support .NET SDK-style project files (".csproj") for C# projects.<br>  See the "DOTNET_SDK" target property and corresponding<br>  "CMAKE_DOTNET_SDK" variable.  "add_custom_command()" is not yet<br>  supported in .NET SDK-style projects.<br><br>* The IBM Open XL C/C++ compiler, based on LLVM, is now supported with<br>  compiler id "IBMClang".<br><br>* The MCST LCC compiler is now supported with compiler id "LCC". See<br>  policy "CMP0129".<br><br>* The "install(TARGETS)" command gained a new "FILE_SET" argument,<br>  which can be used to install header file sets associated with a<br>  target.<br><br>* The "target_sources()" command gained a new "FILE_SET" mode, which<br>  can be used to add headers as header-only source files of a target.<br><br>* The "CMAKE_CUDA_ARCHITECTURES" variable and associated<br>  "CUDA_ARCHITECTURES" target property now support the "all", and<br>  "all-major" values for CUDA toolkit 7.0+.<br><br><br>CMake 3.23 Release Notes<br>************************<br><br>Changes made since CMake 3.22 include the following.<br><br><br>New Features<br>============<br><br><br>Presets<br>-------<br><br>* "cmake-presets(7)" files now support schema version "4".<br><br>* "cmake-presets(7)" files now have an optional "include" field, which<br>  allows the files to include other files.<br><br>* "cmake-presets(7)" gained support for specifying the<br>  "resolvePackageReferences" command line option in a build preset to<br>  control restoration behavior of package references from external<br>  package managers. Currently this is only supported by the Visual<br>  Studio generator to support restoring packages from NuGet. Other<br>  generators ignore this option.<br><br><br>Generators<br>----------<br><br>* The Visual Studio Generators for VS 2019 and above learned to<br>  support .NET SDK-style project files (".csproj") for C# projects.<br>  See the "DOTNET_SDK" target property and corresponding<br>  "CMAKE_DOTNET_SDK" variable.  "add_custom_command()" is not yet<br>  supported in .NET SDK-style projects.<br><br>* The Visual Studio Generators for VS 2017 and above learned to use<br>  portable instances of Visual Studio not known to the VS installer.<br>  See the "CMAKE_GENERATOR_INSTANCE" variable.<br><br><br>Command-Line<br>------------<br><br>* The "cmake(1)" "--build" command, when used with Visual Studio<br>  Generators on projects that set the "VS_PACKAGE_REFERENCES" target<br>  property, now automatically restores package references from NuGet.<br>  The cache variable "CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to<br>  toggle this behavior in a build tree.  Use the "--resolve-package-<br>  references=<on|off|only>" command-line option to control the<br>  behavior on one invocation.<br><br>* The "cmake(1)" command line tool gained a "--debug-find-pkg=" option<br>  to enable debug messages under specific "find_package()" calls.<br><br>* The "cmake(1)" command line tool gained a "--debug-find-var=" option<br>  to enable debug messages for "find_*" calls that use specific result<br>  variables.<br><br><br>Compilers<br>---------<br><br>* The IBM Open XL C/C++ compiler, based on LLVM, is now supported with<br>  compiler id "IBMClang".<br><br>* The MCST LCC compiler is now supported with compiler id "LCC". See<br>  policy "CMP0129".<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.4".<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "directory" object<br>  "installers" field gained a new "fileSet" installer type.<br><br><br>Commands<br>--------<br><br>* The "define_property()" command gained a new<br>  "INITIALIZE_FROM_VARIABLE" option to cause a target property to be<br>  initialized from a variable when a target is created.<br><br>* The "install(TARGETS)" command gained a new "FILE_SET" argument,<br>  which can be used to install header file sets associated with a<br>  target.<br><br>* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands now support<br>  the "%f" specifier for microseconds.<br><br>* The "target_sources()" command gained a new "FILE_SET" mode, which<br>  can be used to add headers as header-only source files of a target.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_CUDA_ARCHITECTURES" variable and associated<br>  "CUDA_ARCHITECTURES" target property now support the "all", and<br>  "all-major" values for CUDA toolkit 7.0+.<br><br>* The "CMAKE_IGNORE_PREFIX_PATH" and "CMAKE_SYSTEM_IGNORE_PREFIX_PATH"<br>  variables were added to tell the "find_package()", "find_program()",<br>  "find_library()", "find_path()", and "find_file()" commands to<br>  ignore specified prefixes.<br><br>* The "CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and corresponding<br>  "LINK_LIBRARIES_ONLY_TARGETS" target property were added to<br>  optionally require that all link items that can be target names are<br>  actually names of existing targets.<br><br><br>Properties<br>----------<br><br>* The "HEADER_SETS" and "INTERFACE_HEADER_SETS" target properties were<br>  added to list header sets associated with a target.<br><br>* The "HEADER_SET" and "HEADER_SET_<NAME>" target properties were<br>  added to list files in the default header set and named header sets,<br>  respectively.<br><br>* The "HEADER_DIRS" and "HEADER_DIRS_<NAME>" target properties were<br>  added to specify the base directories of the default header set and<br>  named header sets, respectively.<br><br>* The "IMPORTED_NO_SYSTEM" target property was added to specify that<br>  an Imported Target should not be treated as a system library (i.e.<br>  its include directories are not automatically "SYSTEM").<br><br>* The "INTERFACE_LINK_LIBRARIES_DIRECT" and<br>  "INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" target properties were<br>  added to express usage requirements affecting a consumer's direct<br>  link dependencies.<br><br>* The "XCODE_EMBED_PLUGINS" target property was added to tell the<br>  "Xcode" generator what targets to put in the "Embed PlugIns" build<br>  phase.<br><br>* The "XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE" target property and<br>  supporting "CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE"<br>  variable were added to tell the "Xcode" generator to enable<br>  specifying the Xcode scheme option property "GPU Frame Capture".<br><br><br>Modules<br>-------<br><br>* The "CheckPIESupported" module now supports the "OBJC", "OBJCXX",<br>  "CUDA", and "HIP" languages.  It also now honors "CMAKE_SYSROOT" and<br>  "CMAKE_OSX_SYSROOT".<br><br>* The "ExternalProject" module's "ExternalProject_Add()" command<br>  gained support for a "USES_TERMINAL_PATCH" option to give the patch<br>  step exclusive terminal access.<br><br>* The "FindCUDAToolkit" module now provides a target for<br>  "libcufft_static_nocallback", if found.<br><br>* The "FindGLUT" module now provides the "GLUT_INCLUDE_DIRS" result<br>  variable to conform with naming conventions documented in the<br>  "cmake-developer(7)" manual.  This supersedes the legacy<br>  "GLUT_INCLUDE_DIR" variable.<br><br>* The "FindGTest" module now provides a target for GMock, if found.<br><br>* The "FindVulkan" module now provides a "Vulkan_VERSION" result<br>  variable reporting the version number.<br><br><br>CTest<br>-----<br><br>* "ctest(1)" gained a new "CTEST_SUBMIT_INACTIVITY_TIMEOUT" variable,<br>  which can be used to specify a timeout for submission inactivity.<br><br><br>CPack<br>-----<br><br>* The "CPack productbuild Generator" gained the new<br>  "CPACK_PRODUCTBUILD_DOMAINS", "CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE",<br>  "CPACK_PRODUCTBUILD_DOMAINS_USER", and<br>  "CPACK_PRODUCTBUILD_DOMAINS_ROOT" variables for adding the domains<br>  element to the Distribution XML.<br><br>* The "CPack productbuild Generator" gained a new variable,<br>  "CPACK_PRODUCTBUILD_IDENTIFIER", used to customize the unique<br>  product identifier associated with the product.<br><br>* The "CPack IFW Generator" gained the new "CPACK_IFW_ARCHIVE_FORMAT"<br>  and "CPACK_IFW_ARCHIVE_COMPRESSION" variables for setting the format<br>  used when packaging new component data archives, and choosing the<br>  compression level used. These features are available for QtIFW 4.2<br>  and newer.<br><br>* The "CPack IFW Generator" gained new<br>  "CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE" variable to<br>  prevent the user from passing any consumer command to the installer,<br>  like "install", "update", and "remove". This feature is available<br>  for QtIFW 4.0 and newer.<br><br>* The "CPack IFW Generator" gained the new<br>  "CPACK_IFW_PACKAGE_PRODUCT_IMAGES" variable for adding a list of<br>  images to be shown on the "PerformInstallationPage". This feature is<br>  available for QtIFW 4.0 and newer.<br><br>* The "CPack IFW Generator" gained the new<br>  "CPACK_IFW_PACKAGE_RUN_PROGRAM",<br>  "CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS", and<br>  "CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION" variables for executing<br>  a command after the installer is done if the user accepts the<br>  action.  This feature is available for QtIFW 4.0 and newer.<br><br>* The "CPack IFW Generator" gained the new<br>  "CPACK_IFW_PACKAGE_SIGNING_IDENTITY" variable for specifying a code<br>  signing identity to be used for signing the generated app bundle.<br>  This feature is available on macOS only, and for QtIFW 3.0 and<br>  newer.<br><br>* The "CPack WIX Generator" gained a new variable,<br>  "CPACK_WIX_SKIP_WIX_UI_EXTENSION", to skip the inclusion of<br>  WixUIExtensions.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* The "cpack(1)" undocumented "OSXX11" generator has been removed.<br><br><br>Other Changes<br>=============<br><br>* The "CPack DragNDrop Generator" no longer attaches<br>  "CPACK_RESOURCE_FILE_LICENSE" as the license agreement in the<br>  generated ".dmg" unless explicitly activated by a<br>  "CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE" option. In CMake projects,<br>  the "CPack" module enables the option by default for compatibility.<br><br>* "CUDA" targets may now enable both "CUDA_SEPARABLE_COMPILATION" and<br>  "CUDA_PTX_COMPILATION".<br><br>* "CUDA" compiler detection now:<br><br>  * issues an error in all cases when it's unable to compute the<br>    default architecture(s) if required (see "CMP0104"),<br><br>  * handles "OFF" for "CMAKE_CUDA_ARCHITECTURES" on Clang,<br><br>  * supports the theoretical case of multiple default architectures,<br>    and<br><br>  * tries to detect invalid architectures and issue an error.<br><br>* "CUDA" with Clang now implements policy "CMP0105" and the<br>  "$<DEVICE_LINK:...>" and "$<HOST_LINK:...>" "generator expressions".<br><br>* The "define_property()" command's "BRIEF_DOCS" and "FULL_DOCS"<br>  arguments are now optional.<br><br>* "ccmake(1)" may now be enabled on Windows when building CMake from<br>  source.  This is experimental, and so is not included in official<br>  distributions.<br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.23.0-rc1:<br><br>Axel Huebl (1):<br>  FindHDF5: Tolerate failure during compiler interrogation<br><br>Brad King (22):<br>  Intel: Add dependencies on system header files on Windows<br>  Help: Clarify precedence of AND and OR in 'if' conditions<br>  cmFindPackageCommand: Drop ComputeIfDebugModeWanted overload<br>  Tests: Improve order of RunCMake.find_package cases<br>  find_package: Improve formatting of --debug-find output<br>  find_package: Fix find module name in --debug-find output<br>  find_package: Mention package name in Config mode debug output<br>  find_package: Avoid printing debug output header multiple times<br>  find_package: Improve --debug-find-pkg= when using a find module<br>  FortranCInterface: Fix mangling detection for x86_64 on arm64 macOS<br>  Help: Organize and clarify export() command documentation<br>  Help: Clarify version specification in CMAKE_GENERATOR_INSTANCE<br>  target_link_libraries: Remove likely-broken ancient compatibility check<br>  target_link_libraries: Handle keyword arguments in dedicated code path<br>  target_link_libraries: Improve tolerance of unquoted generator expressions<br>  Tests: Fix CudaOnly.SeparateCompilationPTX test project name<br>  Tests: Add RunCMake helper to run cmake with raw execute_process args<br>  libarchive: Fix OpenSSL crypto library checks for build inside CMake<br>  Tests: Add missing guards on Qt4 and Qt5 tests<br>  CheckTypeSize: Modernize and clarify documentation<br>  CUDA: Restore support for non-"all" CUDA_ARCHITECTURES with nvcc 11.5+<br>  CMake 3.23.0-rc2<br><br>Carsten Rudolph (2):<br>  cmake --build: prioritize --resolve-package-references over preset<br>  Help: Clarify how package resolve mode is intended to be used<br><br>Connor Imes (1):<br>  Help: use package-specific var for supported component list<br><br>Craig Scott (2):<br>  Help: Fix typo and improve docs for --debug-find-pkg|var options<br>  cmake::GetDebugFindPkgOutput: Use consistent argument name<br><br>Deniz Bahadir (1):<br>  Windows/Clang: Support PDB when cross-compiling<br><br>Eugene Shalygin (1):<br>  install(TARGETS): Restore per-export INCLUDES DESTINATION<br><br>Evgeniy Shcherbina (1):<br>  GoogleTest: Fix escaping in test names<br><br>Heiko Thiel (1):<br>  Help: Add MSVC_TOOLSET_VERSION value for v143 toolset<br><br>Kyle Edwards (1):<br>  install(): Properly ignore FILE_SETs that don't exist<br><br>Ralf Habacker (1):<br>  Help: Document CMAKE_PLATFORM_NO_VERSIONED_SONAME<br><br>Robert Maynard (2):<br>  cmake: Ignore any empty "" command line arguments<br>  cmake: When given multiple source paths use last instead of first<br><br>Silvio Traversaro (1):<br>  FindGLUT: Use link directories for libs from pkg-config<br><br>Tom M (1):<br>  FindMatlab: Fix version detection for MCR >= 9.10<br><br>William R. Dieter (1):<br>  IntelLLVM: Add dependencies on system header files on Windows<br></div>