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

.. only:: html

  .. contents::

Changes made since CMake 3.27 include the following.

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

Languages
---------

* C++ 20 named modules are now supported by :ref:`Ninja Generators`
  and :ref:`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 :manual:`cmake-cxxmodules(7)` for details.

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

Platforms
---------

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

  * The :command:`find_library` command now finds ``.xcframework`` folders.

  * The :command:`target_link_libraries` command now supports
    linking against a ``.xcframework`` folder.

  * The :prop_tgt:`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
  :variable:`CMAKE_SYSTEM_NAME` to ``visionOS``.
  See :ref:`Cross Compiling for iOS, tvOS, visionOS, or watchOS`
  for more information.

Presets
-------

* :manual:`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
  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``CrayClang``.

* The OrangeC compiler is now supported with
  :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``OrangeC``.

Commands
--------

* The :command:`add_custom_command` and :command:`add_custom_target`
  commands gained a ``JOB_SERVER_AWARE`` option.

* The :command:`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 :command:`set_property` command ``TEST`` mode gained a ``DIRECTORY``
  option to set properties on tests in other directories.

* The :command:`set_tests_properties` command gained a ``DIRECTORY``
  option to set properties on tests in other directories.

* The :command:`get_property` command ``TEST`` mode gained a ``DIRECTORY``
  option to get properties on tests in other directories.

* The :command:`get_test_property` command gained a ``DIRECTORY``
  option to get properties on tests in other directories.

Variables
---------

* The :envvar:`CMAKE_CROSSCOMPILING_EMULATOR` environment variable
  was added to initialize the :variable:`CMAKE_CROSSCOMPILING_EMULATOR`
  cache variable.

* The :variable:`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 :prop_tgt:`IMPORTED_IMPLIB` target
  property may now be used without :prop_tgt:`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 :prop_tgt:`IMPORTED_LOCATION` property of a macOS framework
  may now be a path to the ``.framework`` folder itself.

* The :prop_tgt:`XCODE_EMBED_RESOURCES <XCODE_EMBED_<type>>` target property
  was added to tell the :generator:`Xcode` generator what targets to put in
  the ``Embed Resources`` build phase.

Modules
-------

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

* The :module:`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 :ref:`Ninja Generators`, this scenario is detected and
  Ninja will raise an error stating that multiple rules generate the same file.

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

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

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

* The :module:`FindPkgConfig` module :command:`pkg_get_variable` command
  gained a ``DEFINE_VARIABLES`` option to pass variables to ``pkg-config``.

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

* The :manual:`generator expressions <cmake-generator-expressions(7)>`
  :genex:`$<IF:...>`, :genex:`$<AND:...>`, and :genex:`$<OR:...>`
  short-circuit to avoid unnecessary evaluation of parameters.

CTest
-----

* CTest may now take a :ref:`dynamically-generated resource spec file
  <ctest-resource-dynamically-generated-spec-file>`, which can be specified by the
  :prop_test:`GENERATED_RESOURCE_SPEC_FILE` test property.

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

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

* The :generator:`Visual Studio 11 2012` generator has been removed.

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

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

* The :generator:`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 :ref:`file sets`, are now considered
  private by default.  Generated public headers must be specified using
  file sets.  This allows :ref:`Ninja Generators` to produce more
  efficient build graphs.  See policy :policy:`CMP0154`.

* The :command:`find_library`, :command:`find_path`, and :command:`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
  :ref:`semicolon-separated list <CMake Language Lists>` 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 :variable:`CMAKE_SYSTEM_PREFIX_PATH`.

* The precompiled Linux ``x86_64`` binaries provided on
  `cmake.org <https://cmake.org/download/>`_ now require GLIBC 2.17 or higher.

Updates
=======

Changes made since CMake 3.28.0 include the following.

3.28.1
------

* This version made no changes to documented features or interfaces.
  Some implementation updates were made to support ecosystem changes
  and/or fix regressions.
