Help/release/4.3.rst
CMake 4.3 Release Notes
.. only:: html
.. contents::
Changes made since CMake 4.2 include the following.
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
: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.
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.jobs field under both build and test presets no longer accept
negative integer values, regardless of the schema version.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.
HIP language code may now be compiled for SPIR-V targets,
e.g., via chipStar. See the :variable:CMAKE_HIP_PLATFORM variable.: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:
--cmake-tar-compression-level flag to specify the
compression level.--cmake-tar-compression-method flag to specify the
compression method.--cmake-tar-threads flag to enable multithreaded operations.7zip and
zip formats.--format=raw flag to disable compression.--lzma flag to specify LZMA compression.The :command:cmake_instrumentation command was added to make
project-level instrumentation queries.
The :command:file(ARCHIVE_CREATE) command:
THREADS option to enable multithreaded operations.COMPRESSION method Deflate as an alias for GZip.COMPRESSION method LZMA.COMPRESSION method LZMA2 as an alias for XZ.COMPRESSION method PPMd for format 7zip.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.
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.
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.
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.
: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.
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.
: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.
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.
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.
Changes made since CMake 4.3.0 include the following.