diff options
author | Brad King <brad.king@kitware.com> | 2024-02-05 17:09:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-02-06 14:29:12 (GMT) |
commit | ab29be4ce167a19dd8d9f0df9c076968884c4ac9 (patch) | |
tree | fc18e13a7bbf7967c093aac22ce51933e3ca4ff2 /Help | |
parent | ca7ef81c39d3c16fdc4f3d2f365dbc5653ec6362 (diff) | |
download | CMake-ab29be4ce167a19dd8d9f0df9c076968884c4ac9.zip CMake-ab29be4ce167a19dd8d9f0df9c076968884c4ac9.tar.gz CMake-ab29be4ce167a19dd8d9f0df9c076968884c4ac9.tar.bz2 |
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.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/release/3.29.rst | 233 |
1 files changed, 135 insertions, 98 deletions
diff --git a/Help/release/3.29.rst b/Help/release/3.29.rst index ba4dd35..a655f62 100644 --- a/Help/release/3.29.rst +++ b/Help/release/3.29.rst @@ -7,158 +7,195 @@ 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 +---------- + +* :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`. + +File-Based API +-------------- + +* 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. + +Compilers +--------- + +* The LLVM/Clang GNU-like frontend on Windows (``clang++``) may now be used + to compile ``CUDA`` language sources. + +Commands +-------- + +* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>` + signature now supports adding build events through :ref:`Alias Targets`. + +* The :command:`cmake_language(EXIT)` sub-command was added to terminate + :option:`cmake -P` scripts with a specified exit code. + +* 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:`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. + +Variables +--------- + +* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to + provide a default value for the :variable:`CMAKE_INSTALL_PREFIX` variable. + +* 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. + +* 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`, + :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`, and + :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables learned + to support a :ref:`semicolon-separated list <CMake Language Lists>` of + CMake language files to be included sequentially. These variables can also + 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. -* The :command:`add_test` command now honors - :variable:`CMAKE_CROSSCOMPILING_EMULATOR` only when cross-compiling. - See policy :policy:`CMP0158`. +Properties +---------- * The :prop_tgt:`CROSSCOMPILING_EMULATOR` target property now supports :manual:`generator expressions <cmake-generator-expressions(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 :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 :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 :prop_tgt:`UNITY_BUILD` target property now supports the + Objective C (``OBJC``) and Objective C++ (``OBJCXX``) languages. -* 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 :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. -* The :command:`create_test_sourcelist` command now provides a full path to - the generated driver source file. +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)` now supports :ref:`job server integration - <ctest-job-server-integration>` on POSIX systems. - * :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. -* The ``CUDA`` language can now be compiled with Clang on Windows - using its GNU-like frontend, ``clang++``. +CPack +----- -* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to - provide a default value for the :variable:`CMAKE_BUILD_TYPE` variable. +* 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:`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. - * 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 :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. - * 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 :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 :variable:`CMAKE_PROJECT_INCLUDE`, - :variable:`CMAKE_PROJECT_INCLUDE_BEFORE`, - :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`, and - :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables learned - to support a :ref:`semicolon-separated list <CMake Language Lists>` of - CMake language files to be included sequentially. These variables can also - reference module names to be found in :variable:`CMAKE_MODULE_PATH` or - builtin to CMake. - -* 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 :cpack_gen:`CPack WIX Generator` gained a new variable, - :variable:`CPACK_WIX_INSTALL_SCOPE`, to control the - ``InstallScope`` property of WiX MSI installers. - * 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. |