| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- CMake 4.3 Release Notes
- ***********************
- .. only:: html
- .. contents::
- Changes made since CMake 4.2 include the following.
- New Features
- ============
- Common Package Specification
- ----------------------------
- * Support for importing and exporting packages described using the |CPS|_
- (CPS) was added. This improves build system interoperability by allowing
- expressive, feature-rich package descriptions to be exchanged in a format
- other than CMake Language.
- * The :command:`find_package` now searches for and can import CPS packages.
- * The :command:`install` and :command:`export` commands gained a new
- ``PACKAGE_INFO`` sub-command to generate CPS package descriptions.
- * The :command:`project` command gained new ``COMPAT_VERSION`` and
- ``SPDX_LICENSE`` options. These values may be inherited when creating a
- CPS package description. See the :command:`install(PACKAGE_INFO)`
- documentation for details.
- .. _CPS: https://cps-org.github.io/cps/
- .. |CPS| replace:: Common Package Specification
- Instrumentation
- ---------------
- * :manual:`cmake-instrumentation(7)` was added to enable collection of
- timing data, target information, and system diagnostic information during
- the configure, generate, build, test, and install steps of a CMake project:
- * Instrumentation data are :ref:`indexed <cmake-instrumentation Indexing>`
- and provided to :ref:`callbacks <cmake-instrumentation Callbacks>` for
- custom processing.
- * Instrumentation data are included in submissions to CDash.
- * Optionally,
- :ref:`Google Trace Event Format <cmake-instrumentation Google Trace File>`
- files may be generated to visualize instrumentation data.
- Presets
- -------
- * :manual:`cmake-presets(7)` files now support schema version ``11``.
- The ``jobs`` field under test presets now supports an empty string, to
- match the behavior of :option:`ctest --parallel` with the value omitted.
- * The ``jobs`` field under both build and test presets no longer accept
- negative integer values, regardless of the schema version.
- File-Based API
- --------------
- * The :manual:`cmake-file-api(7)` "codemodel" version 2 version field
- has been updated to 2.10.
- * The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object
- gained a new ``interfaceSources`` array field, and the ``sourceGroups``
- array items gained a new ``interfaceSourceIndexes`` array field.
- Platforms
- ---------
- * ``HIP`` language code may now be compiled for SPIR-V targets,
- e.g., via chipStar. See the :variable:`CMAKE_HIP_PLATFORM` variable.
- Command-Line
- ------------
- * :option:`cmake --version` now supports a ``=json-v1`` value to print
- detailed version information in a JSON format.
- * :option:`cmake --build` now supports specifying a build directory and
- preset together. The build preset will be used with the explicit
- build directory substituted.
- * The :option:`cmake -E` commands
- :option:`md5sum <cmake-E md5sum>`,
- :option:`sha1sum <cmake-E sha1sum>`,
- :option:`sha224sum <cmake-E sha224sum>`,
- :option:`sha256sum <cmake-E sha256sum>`,
- :option:`sha384sum <cmake-E sha384sum>`, and
- :option:`sha512sum <cmake-E sha512sum>`
- now support reading from standard input by passing ``-``.
- * The :option:`cmake -E bin2c <cmake-E bin2c>` command-line tool was added.
- * The :option:`cmake -E tar <cmake-E tar>` command-line tool:
- * Gained a ``--cmake-tar-compression-level`` flag to specify the
- compression level.
- * Gained a ``--cmake-tar-compression-method`` flag to specify the
- compression method.
- * Gained a ``--cmake-tar-threads`` flag to enable multithreaded operations.
- * Now supports specifying compression method and level for ``7zip`` and
- ``zip`` formats.
- * Gained a ``--format=raw`` flag to disable compression.
- * Gained a ``--lzma`` flag to specify ``LZMA`` compression.
- Commands
- --------
- * The :command:`cmake_instrumentation` command was added to make
- project-level instrumentation queries.
- * The :command:`file(ARCHIVE_CREATE)` command:
- * Gained a ``THREADS`` option to enable multithreaded operations.
- * Now supports ``COMPRESSION`` method ``Deflate`` as an alias for ``GZip``.
- * Now supports ``COMPRESSION`` method ``LZMA``.
- * Now supports ``COMPRESSION`` method ``LZMA2`` as an alias for ``XZ``.
- * Now supports ``COMPRESSION`` method ``PPMd`` for format ``7zip``.
- * Now supports ``COMPRESSION`` and ``COMPRESSION_LEVEL`` options
- for formats ``7zip`` and ``zip``.
- * The :command:`get_property` and :command:`set_property` commands
- now support a ``FILE_SET`` scope for file set properties of a target.
- * The :command:`string(JSON)` command gained new ``GET_RAW`` and
- ``STRING_ENCODE`` modes.
- * The :command:`source_group` command now supports
- :manual:`generator expressions <cmake-generator-expressions(7)>`.
- * The :command:`cmake_host_system_information` command gained a
- ``LOCALE_CHARSET`` query for the expected :manual:`cmake-language(7)`
- script encoding.
- Variables
- ---------
- * The :variable:`CMAKE_<LANG>_LINK_FLAGS` and
- :variable:`CMAKE_<LANG>_LINK_FLAGS_<CONFIG>` variables were added
- to support per-language link flags for all target types.
- See policy :policy:`CMP0210`.
- * The :variable:`CMAKE_VERIFY_PRIVATE_HEADER_SETS` variable and corresponding
- :prop_tgt:`VERIFY_PRIVATE_HEADER_SETS` target property were added to
- enable build rules that verify all headers in private file sets can be used
- on their own.
- Properties
- ----------
- * A :prop_tgt:`<LANG>_PVS_STUDIO` target property and supporting
- :variable:`CMAKE_<LANG>_PVS_STUDIO` variable were introduced to tell
- :ref:`Makefile Generators` and :ref:`Ninja Generators` to run
- ``pvs-studio-analyzer`` with the compiler for ``C`` and ``CXX`` languages.
- * When :prop_tgt:`VERIFY_INTERFACE_HEADER_SETS` is set to true on an executable
- target, that target's interface file sets are verified regardless of its
- :prop_tgt:`ENABLE_EXPORTS` property. See policy :policy:`CMP0209`.
- * The :prop_tgt:`PRIVATE_HEADER_SETS_TO_VERIFY` target property was added to
- customize which private file sets to verify when the target's
- :prop_tgt:`VERIFY_PRIVATE_HEADER_SETS` property is true.
- Modules
- -------
- * The :module:`FindCUDAToolkit` module now creates a ``CUDA::bin2c``
- imported target for the :ref:`bin2c <FindCUDAToolkit_bin2c>` utility.
- * The :module:`FindLibXml2` module gained a ``LibXml2_USE_STATIC_LIBS`` hint
- to select static libraries.
- * The :module:`FindRuby` module now provides imported targets.
- * The :module:`FindSQLite3` module now provides imported
- targets with the ``SQLite3::`` prefix.
- * The :module:`UseJava` module's :command:`add_jar` command now accepts a new
- ``INCLUDE_MODULES`` option that adds its arguments to the ``--module-path``
- argument to the Java compiler. This allows building JAR files that use JPMS
- modules in their build.
- Generator Expressions
- ---------------------
- * :ref:`String Comparison <String Comparisons Generator Expressions>`
- generator expressions were added.
- * :genex:`$<STRING:...>` generator expressions were added for
- :ref:`query <String Queries Generator Expressions>`,
- :ref:`generation <String Generating Generator Expressions>`, and
- :ref:`transformation <String Transforming Generator Expressions>`
- operations on strings.
- * The :genex:`$<FILE_SET_EXISTS>` and :genex:`$<FILE_SET_PROPERTY>` generator
- expressions were added to query file set existence and properties.
- * The :genex:`$<SOURCE_EXISTS>` and :genex:`$<SOURCE_PROPERTY>` generator
- expressions were added to query source file existence and properties.
- CTest
- -----
- * The :module:`CTestCoverageCollectGCOV` module:
- * Now supports ``TARBALL_COMPRESSION`` method ``LZMA``.
- * Now supports ``TARBALL_COMPRESSION`` method ``LZMA2``
- as an alias for ``XZ``.
- * Now supports ``FROM_EXT`` with file extensions corresponding to
- ``LZMA`` and ``ZSTD`` compression.
- CPack
- -----
- * :module:`CPack` gained the :variable:`CPACK_COMPRESSION_LEVEL`
- variable to control the compression level used when creating
- packages.
- * The :cpack_gen:`CPack Archive Generator`:
- * Now supports compression method specification for formats
- ``7zip`` and ``zip``.
- * Gained a :variable:`CPACK_ARCHIVE_COMPRESSION_LEVEL` option to
- control the compression level used when creating archive packages.
- * Gained :variable:`CPACK_ARCHIVE_UID` and :variable:`CPACK_ARCHIVE_GID`
- options to specify the UID and GID of archive entries, respectively.
- The defaults are UID ``0`` and GID ``0``. See policy :policy:`CMP0206`.
- * The :cpack_gen:`CPack DEB Generator` gained a new
- :variable:`CPACK_DEBIAN_COMPRESSION_LEVEL` variable to control the
- compression level used when creating Debian packages.
- * The :cpack_gen:`CPack WIX Generator` now supports per-user installers
- by setting :variable:`CPACK_WIX_INSTALL_SCOPE` to ``perUser``.
- Deprecated and Removed Features
- ===============================
- * The :variable:`CMAKE_ENABLE_EXPORTS` variable is deprecated in favor of
- the :variable:`CMAKE_EXECUTABLE_ENABLE_EXPORTS` and
- :variable:`CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS` variables.
- * The :command:`export(EXPORT)` command no longer allows certain
- arguments to be missing or empty. See policy :policy:`CMP0208`.
- Other Changes
- =============
- * The :option:`cmake -E tar <cmake-E tar>` command-line tool
- and the :command:`file(ARCHIVE_EXTRACT)` command now reject archive
- entries whose paths are absolute or contain ``..`` path traversal
- components.
- * The family of :option:`cmake --trace` and related commands now print "end"
- commands for control structures: :command:`endblock`, :command:`endforeach`,
- :command:`endfunction`, :command:`endif`, :command:`endmacro`, and
- :command:`endwhile`.
- * The :command:`file(CREATE_LINK)` command's ``COPY_ON_ERROR`` option,
- when used with a directory, now copies directory content.
- See policy :policy:`CMP0205`.
- * The :command:`file(GET_RUNTIME_DEPENDENCIES)`
- and :command:`install(RUNTIME_DEPENDENCY_SET)` commands now normalize
- paths before matching filters. See policy :policy:`CMP0207`.
- * The precompiled Linux ``aarch64`` binaries provided on
- `cmake.org <https://cmake.org/download/>`_ now require GLIBC 2.28 or higher.
- * The precompiled macOS binary provided on ``cmake.org`` for macOS 10.13+
- now requires macOS 12 or newer for the :manual:`cmake-gui(1)` application.
- The command-line tools still run on macOS 10.13.
- * The precompiled Windows binaries provided on
- `cmake.org <https://cmake.org/download/>`_ now require Windows 10 or higher.
- Updates
- =======
- Changes made since CMake 4.3.0 include the following.
- 4.3.1
- -----
- * This version made no changes to documented features or interfaces.
- Some implementation updates were made to support ecosystem changes
- and/or fix regressions.
|