CMake 3.28.0-rc4 is ready for testing

John Parent john.parent at kitware.com
Mon Nov 6 19:00:00 GMT 2023


I am proud to announce the fourth CMake 3.28 release candidate.
  https://cmake.org/download/

Documentation is available at:
  https://cmake.org/cmake/help/v3.28

Release notes appear below and are also published at
  https://cmake.org/cmake/help/v3.28/release/3.28.html

Some of the more significant changes in CMake 3.28 are:

* C++ 20 named modules are now supported by Ninja Generators and
  Visual Studio Generators for VS 2022 and newer, in combination with
  the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and
  newer. See "cmake-cxxmodules(7)" for details.

* "HIP" language code may now be compiled for NVIDIA GPUs using the
  NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.

* On Apple platforms, ".xcframework" folders are now supported.

* The "exec_program()" command, which has been deprecated since CMake
  3.0, has been removed by policy "CMP0153". Use the
  "execute_process()" command instead.

* Generated files, in targets using File Sets, are now considered
  private by default.  Generated public headers must be specified
  using file sets.  This allows Ninja Generators to produce more
  efficient build graphs.  See policy "CMP0154".

* The "find_library()", "find_path()", and "find_file()" commands no
  longer search in installation prefixes derived from the "PATH"
  environment variable.  This behavior was added in CMake 3.3 to
  support MSYS and MinGW ("MSYSTEM") development environments on
  Windows, but it can search undesired prefixes that happen to be in
  the "PATH" for unrelated reasons.  Users who keep some
  "<prefix>/bin" directories in the "PATH" just for their tools do not
  necessarily want any corresponding "<prefix>/lib" or
  "<prefix>/include" directories searched. The behavior was reverted
  for non-Windows platforms by CMake 3.6. Now it has been reverted on
  Windows platforms too.


CMake 3.28 Release Notes
************************

Changes made since CMake 3.27 include the following.


New Features
============


Languages
---------

* C++ 20 named modules are now supported by Ninja Generators and
  Visual Studio Generators for VS 2022 and newer, in combination with
  the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
  16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and
  newer. See "cmake-cxxmodules(7)" for details.

* "HIP" language code may now be compiled for NVIDIA GPUs using the
  NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.


Platforms
---------

* On Apple platforms, ".xcframework" folders are now supported:

  * The "find_library()" command now finds ".xcframework" folders.

  * The "target_link_libraries()" command now supports linking against
    a ".xcframework" folder.

  * The "IMPORTED_LOCATION" target property of an imported library
    target may now be the path to a ".xcframework" folder.

* Apple visionOS and its "xros" and "xrsimulator" SDKs are now
  supported. Compiling for Apple visionOS can be requested by setting
  "CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for iOS,
  tvOS, visionOS, or watchOS for more information.


Presets
-------

* "cmake-presets(7)" files now support schema version "8". It adds
  support for a "$schema" field.


Compilers
---------

* Cray Clang-based compilers are now supported with "compiler id"
  "CrayClang".

* The OrangeC compiler is now supported with "compiler id" "OrangeC".


Commands
--------

* The "add_custom_command()" and "add_custom_target()" commands gained
  a "JOB_SERVER_AWARE" option.

* The "cmake_host_system_information()" command gained a
  "MSYSTEM_PREFIX" query for the installation prefix of a MSYS or
  MinGW development environment on Windows hosts.

* The "set_property()" command "TEST" mode gained a "DIRECTORY" option
  to set properties on tests in other directories.

* The "set_tests_properties()" command gained a "DIRECTORY" option to
  set properties on tests in other directories.

* The "get_property()" command "TEST" mode gained a "DIRECTORY" option
  to get properties on tests in other directories.

* The "get_test_property()" command gained a "DIRECTORY" option to get
  properties on tests in other directories.


Variables
---------

* The "CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added
  to initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.

* The "CMAKE_HIP_PLATFORM" variable was added to specify the GPU
  platform for which HIP language sources are to be compiled ("amd" or
  "nvidia").


Properties
----------

* On imported shared libraries, the "IMPORTED_IMPLIB" target property
  may now be used without "IMPORTED_LOCATION". This can be used to
  represent a stub library whose location should not be added as a
  runtime search path to dependents that link it.

* The "IMPORTED_LOCATION" property of a macOS framework may now be a
  path to the ".framework" folder itself.

* The "XCODE_EMBED_RESOURCES" target property was added to tell the
  "Xcode" generator what targets to put in the "Embed Resources" build
  phase.


Modules
-------

* The "ExternalProject" module now includes the
  "BUILD_JOB_SERVER_AWARE" option for the "ExternalProject_Add()"
  command. This option enables the integration of the GNU Make job
  server when using an explicit "BUILD_COMMAND" with certain Makefile
  Generators. Additionally, the "ExternalProject_Add_Step()" command
  has been updated to support the new "JOB_SERVER_AWARE" option.

* The "ExternalProject" module now declares "BYPRODUCTS" for the
  downloaded file for generated "download" steps. Previously, if
  multiple external projects downloaded to the same file, hash
  verification could fail. Now, when using the Ninja Generators, this
  scenario is detected and Ninja will raise an error stating that
  multiple rules generate the same file.

* The "FetchContent" module's "FetchContent_Declare()" command gained
  an "EXCLUDE_FROM_ALL" option, which propagates through to the
  "add_subdirectory()" call made by "FetchContent_MakeAvailable()" for
  the dependency.

* The "FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to select
  static libraries.

* The "FindEXPAT" module gained an "EXPAT_USE_STATIC_LIBS" hint to
  select static libraries.

* The "FindPkgConfig" module "pkg_get_variable()" command gained a
  "DEFINE_VARIABLES" option to pass variables to "pkg-config".


Generator Expressions
---------------------

* The "generator expressions" "$<IF:...>", "$<AND:...>", and
  "$<OR:...>" short-circuit to avoid unnecessary evaluation of
  parameters.


CTest
-----

* CTest may now take a dynamically-generated resource spec file, which
  can be specified by the "GENERATED_RESOURCE_SPEC_FILE" test
  property.


Deprecated and Removed Features
===============================

* The "exec_program()" command, which has been deprecated since CMake
  3.0, has been removed by policy "CMP0153". Use the
  "execute_process()" command instead.

* The "Visual Studio 11 2012" generator has been removed.

* The "Visual Studio 12 2013" generator is now deprecated and will be
  removed in a future version of CMake.

* The "IOS_INSTALL_COMBINED" target property and corresponding
  "CMAKE_IOS_INSTALL_COMBINED" variable have been deprecated. Their
  functionality does not make sense on Apple Silicon hosts.

* The "Xcode" generator will now issue a fatal error if the Legacy
  Build System has been selected for Xcode 14 and newer. Those Xcode
  versions dropped support for the Legacy Build System and expect the
  project to be set-up for their current Build System.


Other Changes
=============

* Generated files, in targets using File Sets, are now considered
  private by default.  Generated public headers must be specified
  using file sets.  This allows Ninja Generators to produce more
  efficient build graphs.  See policy "CMP0154".

* The "find_library()", "find_path()", and "find_file()" commands no
  longer search in installation prefixes derived from the "PATH"
  environment variable.  This behavior was added in CMake 3.3 to
  support MSYS and MinGW ("MSYSTEM") development environments on
  Windows, but it can search undesired prefixes that happen to be in
  the "PATH" for unrelated reasons.  Users who keep some
  "<prefix>/bin" directories in the "PATH" just for their tools do not
  necessarily want any corresponding "<prefix>/lib" or
  "<prefix>/include" directories searched. The behavior was reverted
  for non-Windows platforms by CMake 3.6. Now it has been reverted on
  Windows platforms too.

  One may set the "CMAKE_PREFIX_PATH" environment variable with a
  semicolon-separated list of prefixes that are to be searched.

* When using MinGW tools in a "MSYSTEM" environment on Windows, the
  "$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now added
  to "CMAKE_SYSTEM_PREFIX_PATH".

* The precompiled Linux "x86_64" binaries provided on cmake.org now
  require GLIBC 2.17 or higher.

----------------------------------------------------------------------------
Changes made since CMake 3.28.0-rc3:

André Apitzsch (1):
  FindProtobuf: Fix protoc include path regression

Ben Boeckel (13):
  FindFreeType: consider `IMPLIB`-using platforms
  Tests/ObjectLibrary: fix comment
  cmComputeLinkDepends: also copy the target from object link items
  cmComputeLinkInformation: skip over linking to items for object purposes
  Tests/CXXModules: test forced rsp files with ninja
  FindFreeType: handle config-specific `LOCATION` settings as well
  FindFreeType: insert Freetype's location to the start
  Fortran: Restore support for TARGET_OBJECTS providing modules
  FindFreeType: also set `FREETYPE_FOUND`
  CMP0155: ignore scanning for sources if no scanner is available
  cmGlobalGenerator: give context about module queries
  ci: generate annotation reports
  gitlab-ci: pull annotations for CDash from the jobs

Brad King (5):
  GetPrerequisites: Revert "Ignore relative paths printed by ldd"
  CMakeParseImplicitLinkInfo: Ignore MSVC link /implib: flag
  CMakeNVCCParseImplicitInfo: Recognize link.exe line in CUDA VS integration
  CUDA: Parse NVCC implicit compile/link information in Visua Studio
generators
  CMake 3.28.0-rc4

Cristian Adam (1):
  ctest: Allow colored output on Windows if CLICOLOR_FORCE is set to 1

Kyle Edwards (3):
  cmState::AddDisallowedCommand(): Allow additional warning info
  CMP0153: Add suggestion to use execute_process()
  cmSystemTools::RunSingleCommand(): Pass stdin to child process
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-devel/attachments/20231106/ac680f38/attachment.htm>


More information about the kde-devel mailing list