mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 07:08:38 -05:00
Help: Organize and revise 3.29 release notes
Add section headers similar to the 3.28 release notes and move each individual bullet into an appropriate section. Revise a few bullets.
This commit is contained in:
+144
-107
@@ -7,129 +7,76 @@ CMake 3.29 Release Notes
|
||||
|
||||
Changes made since CMake 3.28 include the following.
|
||||
|
||||
* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>`
|
||||
signature now supports adding build events through :ref:`Alias Targets`.
|
||||
New Features
|
||||
============
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* :manual:`cmake(1)` :option:`-E cat <cmake-E cat>` can now print the standard
|
||||
input by passing the ``-`` argument.
|
||||
|
||||
* The :command:`cmake_language()` command gained a new ``EXIT``
|
||||
sub-command to exit scripts with a specified exit code.
|
||||
Generators
|
||||
----------
|
||||
|
||||
* A :variable:`CMAKE_TEST_LAUNCHER` variable and corresponding
|
||||
:prop_tgt:`TEST_LAUNCHER` target property were added to specify
|
||||
a launcher to be used by executable targets when invoked by
|
||||
tests added by the :command:`add_test` command.
|
||||
* :ref:`Visual Studio Generators` now support selecting between the
|
||||
Intel oneAPI Fortran compiler (``ifx``) and the Intel classic Fortran
|
||||
compiler (``ifort``) using a ``fortran=`` field in
|
||||
:variable:`CMAKE_GENERATOR_TOOLSET`.
|
||||
|
||||
* The :command:`add_test` command now honors
|
||||
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` only when cross-compiling.
|
||||
See policy :policy:`CMP0158`.
|
||||
File-Based API
|
||||
--------------
|
||||
|
||||
* The :prop_tgt:`CROSSCOMPILING_EMULATOR` target property now
|
||||
supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
||||
been updated to 2.7.
|
||||
|
||||
* The linker effectively used for the link step is now documented with the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER`,
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_ID`,
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_VERSION` and
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT` variables.
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
|
||||
a new "launchers" field.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` :variable:`CPACK_DEBIAN_FILE_NAME`
|
||||
variable may now be set without any suffix, and the ``.deb`` suffix
|
||||
will be added automatically.
|
||||
Compilers
|
||||
---------
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` :variable:`CPACK_RPM_FILE_NAME`
|
||||
variable may now be set without any suffix, and the ``.rpm`` suffix
|
||||
will be added automatically.
|
||||
* The LLVM/Clang GNU-like frontend on Windows (``clang++``) may now be used
|
||||
to compile ``CUDA`` language sources.
|
||||
|
||||
* The :command:`create_test_sourcelist` command now provides a full path to
|
||||
the generated driver source file.
|
||||
Commands
|
||||
--------
|
||||
|
||||
* :manual:`ctest(1)` gained a :option:`--http-header <ctest --http-header>`
|
||||
option to add custom headers on submission to CDash.
|
||||
* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>`
|
||||
signature now supports adding build events through :ref:`Alias Targets`.
|
||||
|
||||
* :manual:`ctest(1)` now supports :ref:`job server integration
|
||||
<ctest-job-server-integration>` on POSIX systems.
|
||||
* The :command:`cmake_language(EXIT)` sub-command was added to terminate
|
||||
:option:`cmake -P` scripts with a specified exit code.
|
||||
|
||||
* :manual:`ctest(1)` gained the :option:`--tests-from-file <ctest
|
||||
--tests-from-file>` and :option:`--exclude-from-file <ctest
|
||||
--exclude-from-file>` options to run or exclude tests named in a file.
|
||||
* The :command:`export(SETUP)` sub-command was added to configure export sets.
|
||||
Its ``PACKAGE_DEPENDENCY`` option configures how :command:`find_dependency`
|
||||
calls are exported. Its ``TARGET`` option's ``XCFRAMEWORK_LOCATION``
|
||||
setting specifies the location of a ``.xcframework`` that can be
|
||||
substituted for an installed target.
|
||||
|
||||
* The :command:`ctest_test` command gained options
|
||||
``INCLUDE_FROM_FILE`` and ``EXCLUDE_FROM_FILE`` to run or exclude
|
||||
tests named in a file.
|
||||
|
||||
* The ``CUDA`` language can now be compiled with Clang on Windows
|
||||
using its GNU-like frontend, ``clang++``.
|
||||
|
||||
* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to
|
||||
provide a default value for the :variable:`CMAKE_BUILD_TYPE` variable.
|
||||
* The :command:`if` command gained new tests ``IS_READABLE``, ``IS_WRITABLE``
|
||||
and ``IS_EXECUTABLE`` to check file or directory permissions.
|
||||
|
||||
* :command:`install(EXPORT)` and :command:`export(EXPORT)` learned a new
|
||||
``EXPORT_PACKAGE_DEPENDENCIES`` argument, which can be used to generate
|
||||
:command:`find_dependency` calls based on what targets the exported targets
|
||||
depend on.
|
||||
* A new :command:`export(SETUP)` signature was created to configure export
|
||||
sets. This can be used to configure how :command:`find_dependency` calls are
|
||||
exported.
|
||||
* A new :prop_tgt:`EXPORT_FIND_PACKAGE_NAME` target property was created to
|
||||
allow targets to specify what package name to pass when exporting
|
||||
:command:`find_dependency` calls. This property is initialized with a new
|
||||
:variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable.
|
||||
* :command:`FetchContent_MakeAvailable` now sets the
|
||||
:variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable for CMake projects.
|
||||
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
||||
been updated to 2.7.
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
|
||||
a new "launchers" field.
|
||||
Variables
|
||||
---------
|
||||
|
||||
* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
|
||||
now accepts ``.a`` file names after first considering ``.lib``. This is
|
||||
symmetric with existing behavior when targeting the GNU ABI, in which the
|
||||
command accepts ``.lib`` file names after first considering ``.a``.
|
||||
* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to
|
||||
provide a default value for the :variable:`CMAKE_INSTALL_PREFIX` variable.
|
||||
|
||||
* The :module:`FindOpenGL` module learned to find a GLU include
|
||||
directory different than the GL include directory. A new
|
||||
``OPENGL_INCLUDE_DIRS`` result variable provides all include
|
||||
directories.
|
||||
* The :variable:`CMAKE_LINKER_TYPE` variable and corresponding
|
||||
:prop_tgt:`LINKER_TYPE` target property were added to specify
|
||||
what linker to use with some toolchains.
|
||||
|
||||
* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
|
||||
now considers ``.dll.lib`` file names before ``.lib``. This is the default
|
||||
suffix for DLL import libraries created by Rust toolchains for the MSVC ABI.
|
||||
|
||||
* The :command:`if` command gained new tests ``IS_READABLE``, ``IS_WRITABLE``
|
||||
and ``IS_EXECUTABLE`` to check file or directory permissions.
|
||||
|
||||
* The :command:`export(SETUP)` command gained a new ``XCFRAMEWORK_LOCATION``
|
||||
argument, which can be used to specify the location of a ``.xcframework``
|
||||
that can be substituted for the installed library.
|
||||
* The :module:`CMakePackageConfigHelpers` module gained a new
|
||||
:command:`generate_apple_platform_selection_file` function, which can be
|
||||
used to generate a file that includes another Apple-platform-specific file.
|
||||
|
||||
* The :generator:`Ninja` and :generator:`NMake Makefiles` generators now use
|
||||
the ``-external:I`` flag for system includes when using IntelLLVM as of
|
||||
version 2021.4. The ``-external:W0`` flag is also used as of version 2022.2.
|
||||
|
||||
* CMake learned to de-duplicate libraries on link lines based on linker
|
||||
capabilities. See policy :policy:`CMP0156`.
|
||||
|
||||
* The linker tool can now be specified for a selection of compilers/platforms
|
||||
by setting :variable:`CMAKE_LINKER_TYPE` variable or :prop_tgt:`LINKER_TYPE`
|
||||
target property.
|
||||
|
||||
* The :variable:`CMAKE_SKIP_TEST_ALL_DEPENDENCY` variable was added
|
||||
to control whether the ``test`` (or ``RUN_TESTS``) buildsystem
|
||||
target depends on the ``all`` (or ``ALL_BUILD``) target.
|
||||
|
||||
* The :module:`CMakePackageConfigHelpers` module gained a new
|
||||
:command:`generate_apple_architecture_selection_file` function, which can be
|
||||
used to generate a file that includes an architecture-specific implementation
|
||||
of a package for an Apple platform.
|
||||
|
||||
* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
|
||||
See policy :policy:`CMP0161`.
|
||||
* The :variable:`CMAKE_<LANG>_COMPILER_LINKER`,
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_ID`,
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_VERSION` and
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT` variables
|
||||
were added to describe the linker used by the language's link step.
|
||||
|
||||
* The :variable:`CMAKE_PROJECT_INCLUDE`,
|
||||
:variable:`CMAKE_PROJECT_INCLUDE_BEFORE`,
|
||||
@@ -140,25 +87,115 @@ Changes made since CMake 3.28 include the following.
|
||||
reference module names to be found in :variable:`CMAKE_MODULE_PATH` or
|
||||
builtin to CMake.
|
||||
|
||||
* The :variable:`CMAKE_SKIP_TEST_ALL_DEPENDENCY` variable was added
|
||||
to control whether the ``test`` (or ``RUN_TESTS``) buildsystem
|
||||
target depends on the ``all`` (or ``ALL_BUILD``) target.
|
||||
|
||||
* A :variable:`CMAKE_TEST_LAUNCHER` variable and corresponding
|
||||
:prop_tgt:`TEST_LAUNCHER` target property were added to specify
|
||||
a launcher to be used by executable targets when invoked by
|
||||
tests added by the :command:`add_test` command.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`CROSSCOMPILING_EMULATOR` target property now
|
||||
supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`EXPORT_FIND_PACKAGE_NAME` target property was added to
|
||||
allow targets to specify what package name to pass when exporting
|
||||
:command:`find_dependency` calls. This property is initialized with a new
|
||||
:variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable.
|
||||
|
||||
* The :prop_tgt:`UNITY_BUILD` target property now supports the
|
||||
Objective C (``OBJC``) and Objective C++ (``OBJCXX``) languages.
|
||||
|
||||
* :ref:`Visual Studio Generators` now support selecting between the
|
||||
Intel oneAPI Fortran compiler (``ifx``) and the Intel classic Fortran
|
||||
compiler (``ifort``) using a ``fortran=`` field in
|
||||
:variable:`CMAKE_GENERATOR_TOOLSET`.
|
||||
* The :prop_tgt:`XCODE_EMBED_XPC_SERVICES <XCODE_EMBED_<type>>` target property
|
||||
was added to tell the :generator:`Xcode` generator what targets to put in
|
||||
the ``Embed XPC Resources`` build phase.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`CMakePackageConfigHelpers` module gained new
|
||||
:command:`generate_apple_platform_selection_file` and
|
||||
:command:`generate_apple_architecture_selection_file` functions, which can
|
||||
be used to generate a file that includes another Apple-platform-specific
|
||||
file or the includes an architecture-specific implementation of a package
|
||||
for an Apple platform, respectively.
|
||||
|
||||
* The :module:`FindOpenGL` module learned to find a GLU include
|
||||
directory different than the GL include directory. A new
|
||||
``OPENGL_INCLUDE_DIRS`` result variable provides all include
|
||||
directories.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* :manual:`ctest(1)` gained a :option:`--http-header <ctest --http-header>`
|
||||
option to add custom headers on submission to CDash.
|
||||
|
||||
* :manual:`ctest(1)` gained the :option:`--tests-from-file <ctest
|
||||
--tests-from-file>` and :option:`--exclude-from-file <ctest
|
||||
--exclude-from-file>` options to run or exclude tests named in a file.
|
||||
|
||||
* :manual:`ctest(1)` now supports :ref:`job server integration
|
||||
<ctest-job-server-integration>` on POSIX systems.
|
||||
|
||||
* The :command:`ctest_test` command gained options
|
||||
``INCLUDE_FROM_FILE`` and ``EXCLUDE_FROM_FILE`` to run or exclude
|
||||
tests named in a file.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` :variable:`CPACK_DEBIAN_FILE_NAME`
|
||||
variable may now be set without any suffix, and the ``.deb`` suffix
|
||||
will be added automatically.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` :variable:`CPACK_RPM_FILE_NAME`
|
||||
variable may now be set without any suffix, and the ``.rpm`` suffix
|
||||
will be added automatically.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` gained a new variable,
|
||||
:variable:`CPACK_WIX_INSTALL_SCOPE`, to control the
|
||||
``InstallScope`` property of WiX MSI installers.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* CMake learned to de-duplicate libraries on link lines based on linker
|
||||
capabilities. See policy :policy:`CMP0156`.
|
||||
|
||||
* The :command:`add_test` command now honors
|
||||
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` only when cross-compiling.
|
||||
See policy :policy:`CMP0158`.
|
||||
|
||||
* :command:`FetchContent_MakeAvailable` now sets the
|
||||
:variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable for CMake projects.
|
||||
|
||||
* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
|
||||
now accepts ``.a`` file names after first considering ``.lib``. This is
|
||||
symmetric with existing behavior when targeting the GNU ABI, in which the
|
||||
command accepts ``.lib`` file names after first considering ``.a``.
|
||||
|
||||
* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
|
||||
now considers ``.dll.lib`` file names before ``.lib``. This is the default
|
||||
suffix for DLL import libraries created by Rust toolchains for the MSVC ABI.
|
||||
|
||||
* The :generator:`Ninja` and :generator:`NMake Makefiles` generators now use
|
||||
the ``-external:I`` flag for system includes when using IntelLLVM as of
|
||||
version 2021.4. The ``-external:W0`` flag is also used as of version 2022.2.
|
||||
|
||||
* The :command:`create_test_sourcelist` command now provides a full path to
|
||||
the generated driver source file.
|
||||
|
||||
* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
|
||||
See policy :policy:`CMP0161`.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` now produces WiX MSI installers
|
||||
that create start menu and uninstall entries for all users by default,
|
||||
as documented by the :variable:`CPACK_WIX_INSTALL_SCOPE` variable
|
||||
``perMachine`` value. Previously, without a custom WiX template,
|
||||
it produced installers that would only create start menu and uninstall
|
||||
entries for the current user, even though they install for all users.
|
||||
|
||||
* The :prop_tgt:`XCODE_EMBED_XPC_SERVICES <XCODE_EMBED_<type>>` target property
|
||||
was added to tell the :generator:`Xcode` generator what targets to put in
|
||||
the ``Embed XPC Resources`` build phase.
|
||||
|
||||
Reference in New Issue
Block a user