[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: [ANNOUNCE] CMake 3.23.0-rc1 is ready for testing
From: Tom Osika <tom.osika () kitware ! com>
Date: 2022-02-08 18:02:30
Message-ID: CAPzDamCVdWrs2sJ_XtcO6cWTg50hHeGG2GwAS=V4ph5GjbEVjw () mail ! gmail ! com
[Download RAW message or body]
I am proud to announce the first CMake 3.23 release candidate.
https://cmake.org/download/
Documentation is available at:
https://cmake.org/cmake/help/v3.23
Release notes appear below and are also published at
https://cmake.org/cmake/help/v3.23/release/3.23.html
Some of the more significant changes in CMake 3.23 are:
* "cmake-presets(7)" files now have an optional "include" field, which
allows the files to include other files.
* The Visual Studio Generators for VS 2019 and above learned to
support .NET SDK-style project files (".csproj") for C# projects.
See the "DOTNET_SDK" target property and corresponding
"CMAKE_DOTNET_SDK" variable. "add_custom_command()" is not yet
supported in .NET SDK-style projects.
* The IBM Open XL C/C++ compiler, based on LLVM, is now supported with
compiler id "IBMClang".
* The MCST LCC compiler is now supported with compiler id "LCC". See
policy "CMP0129".
* The "install(TARGETS)" command gained a new "FILE_SET" argument,
which can be used to install header file sets associated with a
target.
* The "target_sources()" command gained a new "FILE_SET" mode, which
can be used to add headers as header-only source files of a target.
* The "CMAKE_CUDA_ARCHITECTURES" variable and associated
"CUDA_ARCHITECTURES" target property now support the "all", and
"all-major" values for CUDA toolkit 7.0+.
CMake 3.23 Release Notes
************************
Changes made since CMake 3.22 include the following.
New Features
============
Presets
-------
* "cmake-presets(7)" files now support schema version "4".
* "cmake-presets(7)" files now have an optional "include" field, which
allows the files to include other files.
* "cmake-presets(7)" gained support for specifying the
"resolvePackageReferences" command line option in a build preset.
Generators
----------
* The Visual Studio Generators for VS 2019 and above learned to
support .NET SDK-style project files (".csproj") for C# projects.
See the "DOTNET_SDK" target property and corresponding
"CMAKE_DOTNET_SDK" variable. "add_custom_command()" is not yet
supported in .NET SDK-style projects.
* The Visual Studio Generators for VS 2017 and above learned to use
portable instances of Visual Studio not known to the VS installer.
See the "CMAKE_GENERATOR_INSTANCE" variable.
Command-Line
------------
* The "cmake(1)" "--build" command, when used with Visual Studio
Generators on projects that set the "VS_PACKAGE_REFERENCES" target
property, now automatically restores package references from NuGet.
The cache variable "CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to
toggle this behavior in a build tree. Use the "--resolve-package-
references=<on|off|only>" command-line option to control the
behavior on one invocation.
* The "cmake(1)" command line tool gained a "--debug-find-pkg=" option
to enable debug messages under specific "find_package()" calls.
* The "cmake(1)" command line tool gained a "--debug-find-var=" option
to enable debug messages for "find_*" calls that use specific result
variables.
Compilers
---------
* The IBM Open XL C/C++ compiler, based on LLVM, is now supported with
compiler id "IBMClang".
* The MCST LCC compiler is now supported with compiler id "LCC". See
policy "CMP0129".
File-Based API
--------------
* The "cmake-file-api(7)" "codemodel" version 2 "version" field has
been updated to "2.4".
* The "cmake-file-api(7)" "codemodel" version 2 "directory" object
"installers" field gained a new "fileSet" installer type.
Commands
--------
* The "define_property()" command gained a new
"INITIALIZE_FROM_VARIABLE" option to cause a target property to be
initialized from a variable when a target is created.
* The "install(TARGETS)" command gained a new "FILE_SET" argument,
which can be used to install header file sets associated with a
target.
* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands now support
the "%f" specifier for microseconds.
* The "target_sources()" command gained a new "FILE_SET" mode, which
can be used to add headers as header-only source files of a target.
Variables
---------
* The "CMAKE_CUDA_ARCHITECTURES" variable and associated
"CUDA_ARCHITECTURES" target property now support the "all", and
"all-major" values for CUDA toolkit 7.0+.
* The "CMAKE_IGNORE_PREFIX_PATH" and "CMAKE_SYSTEM_IGNORE_PREFIX_PATH"
variables were added to tell the "find_package()", "find_program()",
"find_library()", "find_path()", and "find_file()" commands to
ignore specified prefixes.
* The "CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and corresponding
"LINK_LIBRARIES_ONLY_TARGETS" target property were added to
optionally require that all link items that can be target names are
actually names of existing targets.
Properties
----------
* The "HEADER_SETS" and "INTERFACE_HEADER_SETS" target properties were
added to list header sets associated with a target.
* The "HEADER_SET" and "HEADER_SET_<NAME>" target properties were
added to list files in the default header set and named header sets,
respectively.
* The "HEADER_DIRS" and "HEADER_DIRS_<NAME>" target properties were
added to specify the base directories of the default header set and
named header sets, respectively.
* The "IMPORTED_NO_SYSTEM" target property was added to specify that
an Imported Target should not be treated as a system library (i.e.
its include directories are not automatically "SYSTEM").
* The "INTERFACE_LINK_LIBRARIES_DIRECT" and
"INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" target properties were
added to express usage requirements affecting a consumer's direct
link dependencies.
* The "XCODE_EMBED_PLUGINS" target property was added to tell the
"Xcode" generator what targets to put in the "Embed PlugIns" build
phase.
* The "XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE" target property and
supporting "CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE"
variable were added to tell the "Xcode" generator to enable
specifying the Xcode scheme option property "GPU Frame Capture".
Modules
-------
* The "CheckPIESupported" module now supports the "OBJC", "OBJCXX",
"CUDA", and "HIP" languages. It also now honors "CMAKE_SYSROOT" and
"CMAKE_OSX_SYSROOT".
* The "ExternalProject" module's "ExternalProject_Add()" command
gained support for a "USES_TERMINAL_PATCH" option to give the patch
step exclusive terminal access.
* The "FindCUDAToolkit" module now provides a target for
"libcufft_static_nocallback", if found.
* The "FindGLUT" module now provides the "GLUT_INCLUDE_DIRS" result
variable to conform with naming conventions documented in the
"cmake-developer(7)" manual. This supersedes the legacy
"GLUT_INCLUDE_DIR" variable.
* The "FindGTest" module now provides a target for GMock, if found.
* The "FindVulkan" module now provides a "Vulkan_VERSION" result
variable reporting the version number.
CTest
-----
* "ctest(1)" gained a new "CTEST_SUBMIT_INACTIVITY_TIMEOUT" variable,
which can be used to specify a timeout for submission inactivity.
CPack
-----
* The "CPack productbuild Generator" gained the new
"CPACK_PRODUCTBUILD_DOMAINS", "CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE",
"CPACK_PRODUCTBUILD_DOMAINS_USER", and
"CPACK_PRODUCTBUILD_DOMAINS_ROOT" variables for adding the domains
element to the Distribution XML.
* The "CPack productbuild Generator" gained a new variable,
"CPACK_PRODUCTBUILD_IDENTIFIER", used to customize the unique
product identifier associated with the product.
* The "CPack IFW Generator" gained the new "CPACK_IFW_ARCHIVE_FORMAT"
and "CPACK_IFW_ARCHIVE_COMPRESSION" variables for setting the format
used when packaging new component data archives, and choosing the
compression level used. These features are available for QtIFW 4.2
and newer.
* The "CPack IFW Generator" gained new
"CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE" variable to
prevent the user from passing any consumer command to the installer,
like "install", "update", and "remove". This feature is available
for QtIFW 4.0 and newer.
* The "CPack IFW Generator" gained the new
"CPACK_IFW_PACKAGE_PRODUCT_IMAGES" variable for adding a list of
images to be shown on the "PerformInstallationPage". This feature is
available for QtIFW 4.0 and newer.
* The "CPack IFW Generator" gained the new
"CPACK_IFW_PACKAGE_RUN_PROGRAM",
"CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS", and
"CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION" variables for executing
a command after the installer is done if the user accepts the
action. This feature is available for QtIFW 4.0 and newer.
* The "CPack IFW Generator" gained the new
"CPACK_IFW_PACKAGE_SIGNING_IDENTITY" variable for specifying a code
signing identity to be used for signing the generated app bundle.
This feature is available on macOS only, and for QtIFW 3.0 and
newer.
* The "CPack WIX Generator" gained a new variable,
"CPACK_WIX_SKIP_WIX_UI_EXTENSION", to skip the inclusion of
WixUIExtensions.
Deprecated and Removed Features
===============================
* The "cpack(1)" undocumented "OSXX11" generator has been removed.
Other Changes
=============
* The "CPack DragNDrop Generator" no longer attaches
"CPACK_RESOURCE_FILE_LICENSE" as the license agreement in the
generated ".dmg" unless explicitly activated by a
"CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE" option. In CMake projects,
the "CPack" module enables the option by default for compatibility.
* "CUDA" targets may now enable both "CUDA_SEPARABLE_COMPILATION" and
"CUDA_PTX_COMPILATION".
* "CUDA" compiler detection now:
* issues an error in all cases when it's unable to compute the
default architecture(s) if required (see "CMP0104"),
* handles "OFF" for "CMAKE_CUDA_ARCHITECTURES" on Clang,
* supports the theoretical case of multiple default architectures,
and
* tries to detect invalid architectures and issue an error.
* "CUDA" with Clang now implements policy "CMP0105" and the
"$<DEVICE_LINK:...>" and "$<HOST_LINK:...>" "generator expressions".
* The "define_property()" command's "BRIEF_DOCS" and "FULL_DOCS"
arguments are now optional.
* "ccmake(1)" may now be enabled on Windows when building CMake from
source. This is experimental, and so is not included in official
distributions.
[Attachment #3 (text/html)]
<div dir="ltr">I am proud to announce the first CMake 3.23 release candidate.<br> \
<a href="https://cmake.org/download/" \
target="_blank">https://cmake.org/download/</a><br><br>Documentation is available \
at:<br> <a href="https://cmake.org/cmake/help/v3.23" \
target="_blank">https://cmake.org/cmake/help/v3.23</a><br><br>Release notes appear \
below and are also published at<br> <a \
href="https://cmake.org/cmake/help/v3.23/release/3.23.html" \
target="_blank">https://cmake.org/cmake/help/v3.23/release/3.23.html</a><br><br>Some \
of the more significant changes in CMake 3.23 are:<br><br>* \
"cmake-presets(7)" files now have an optional "include" field, \
which<br> allows the files to include other files.<br><br>* The Visual Studio \
Generators for VS 2019 and above learned to<br> support .NET SDK-style project \
files (".csproj") for C# projects.<br> See the "DOTNET_SDK" \
target property and corresponding<br> "CMAKE_DOTNET_SDK" variable. \
"add_custom_command()" is not yet<br> supported in .NET SDK-style \
projects.<br><br>* The IBM Open XL C/C++ compiler, based on LLVM, is now supported \
with<br> compiler id "IBMClang".<br><br>* The MCST LCC compiler is now \
supported with compiler id "LCC". See<br> policy \
"CMP0129".<br><br>* The "install(TARGETS)" command gained a new \
"FILE_SET" argument,<br> which can be used to install header file sets \
associated with a<br> target.<br><br>* The "target_sources()" command \
gained a new "FILE_SET" mode, which<br> can be used to add headers as \
header-only source files of a target.<br><br>* The \
"CMAKE_CUDA_ARCHITECTURES" variable and associated<br> \
"CUDA_ARCHITECTURES" target property now support the "all", \
and<br> "all-major" values for CUDA toolkit 7.0+.<br><br><br>CMake 3.23 \
Release Notes<br>************************<br><br>Changes made since CMake 3.22 \
include the following.<br><br><br>New \
Features<br>============<br><br><br>Presets<br>-------<br><br>* \
"cmake-presets(7)" files now support schema version "4".<br><br>* \
"cmake-presets(7)" files now have an optional "include" field, \
which<br> allows the files to include other files.<br><br>* \
"cmake-presets(7)" gained support for specifying the<br> \
"resolvePackageReferences" command line option in a build \
preset.<br><br><br>Generators<br>----------<br><br>* The Visual Studio Generators for \
VS 2019 and above learned to<br> support .NET SDK-style project files \
(".csproj") for C# projects.<br> See the "DOTNET_SDK" target \
property and corresponding<br> "CMAKE_DOTNET_SDK" variable. \
"add_custom_command()" is not yet<br> supported in .NET SDK-style \
projects.<br><br>* The Visual Studio Generators for VS 2017 and above learned to \
use<br> portable instances of Visual Studio not known to the VS installer.<br> \
See the "CMAKE_GENERATOR_INSTANCE" \
variable.<br><br><br>Command-Line<br>------------<br><br>* The "cmake(1)" \
"--build" command, when used with Visual Studio<br> Generators on \
projects that set the "VS_PACKAGE_REFERENCES" target<br> property, now \
automatically restores package references from NuGet.<br> The cache variable \
"CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to<br> toggle this behavior \
in a build tree. Use the "--resolve-package-<br> \
references=<on|off|only>" command-line option to control the<br> \
behavior on one invocation.<br><br>* The "cmake(1)" command line tool \
gained a "--debug-find-pkg=" option<br> to enable debug messages under \
specific "find_package()" calls.<br><br>* The "cmake(1)" command \
line tool gained a "--debug-find-var=" option<br> to enable debug \
messages for "find_*" calls that use specific result<br> \
variables.<br><br><br>Compilers<br>---------<br><br>* The IBM Open XL C/C++ compiler, \
based on LLVM, is now supported with<br> compiler id "IBMClang".<br><br>* \
The MCST LCC compiler is now supported with compiler id "LCC". See<br> \
policy "CMP0129".<br><br><br>File-Based API<br>--------------<br><br>* The \
"cmake-file-api(7)" "codemodel" version 2 "version" \
field has<br> been updated to "2.4".<br><br>* The \
"cmake-file-api(7)" "codemodel" version 2 "directory" \
object<br> "installers" field gained a new "fileSet" installer \
type.<br><br><br>Commands<br>--------<br><br>* The "define_property()" \
command gained a new<br> "INITIALIZE_FROM_VARIABLE" option to cause a \
target property to be<br> initialized from a variable when a target is \
created.<br><br>* The "install(TARGETS)" command gained a new \
"FILE_SET" argument,<br> which can be used to install header file sets \
associated with a<br> target.<br><br>* The "string(TIMESTAMP)" and \
"file(TIMESTAMP)" commands now support<br> the "%f" specifier \
for microseconds.<br><br>* The "target_sources()" command gained a new \
"FILE_SET" mode, which<br> can be used to add headers as header-only \
source files of a target.<br><br><br>Variables<br>---------<br><br>* The \
"CMAKE_CUDA_ARCHITECTURES" variable and associated<br> \
"CUDA_ARCHITECTURES" target property now support the "all", \
and<br> "all-major" values for CUDA toolkit 7.0+.<br><br>* The \
"CMAKE_IGNORE_PREFIX_PATH" and \
"CMAKE_SYSTEM_IGNORE_PREFIX_PATH"<br> variables were added to tell the \
"find_package()", "find_program()",<br> \
"find_library()", "find_path()", and "find_file()" \
commands to<br> ignore specified prefixes.<br><br>* The \
"CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and corresponding<br> \
"LINK_LIBRARIES_ONLY_TARGETS" target property were added to<br> \
optionally require that all link items that can be target names are<br> actually \
names of existing targets.<br><br><br>Properties<br>----------<br><br>* The \
"HEADER_SETS" and "INTERFACE_HEADER_SETS" target properties \
were<br> added to list header sets associated with a target.<br><br>* The \
"HEADER_SET" and "HEADER_SET_<NAME>" target properties \
were<br> added to list files in the default header set and named header sets,<br> \
respectively.<br><br>* The "HEADER_DIRS" and \
"HEADER_DIRS_<NAME>" target properties were<br> added to specify \
the base directories of the default header set and<br> named header sets, \
respectively.<br><br>* The "IMPORTED_NO_SYSTEM" target property was added \
to specify that<br> an Imported Target should not be treated as a system library \
(i.e.<br> its include directories are not automatically \
"SYSTEM").<br><br>* The "INTERFACE_LINK_LIBRARIES_DIRECT" and<br> \
"INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" target properties were<br> \
added to express usage requirements affecting a consumer's direct<br> link \
dependencies.<br><br>* The "XCODE_EMBED_PLUGINS" target property was added \
to tell the<br> "Xcode" generator what targets to put in the "Embed \
PlugIns" build<br> phase.<br><br>* The \
"XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE" target property and<br> \
supporting "CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE"<br> \
variable were added to tell the "Xcode" generator to enable<br> \
specifying the Xcode scheme option property "GPU Frame \
Capture".<br><br><br>Modules<br>-------<br><br>* The \
"CheckPIESupported" module now supports the "OBJC", \
"OBJCXX",<br> "CUDA", and "HIP" languages. It also \
now honors "CMAKE_SYSROOT" and<br> \
"CMAKE_OSX_SYSROOT".<br><br>* The "ExternalProject" module's \
"ExternalProject_Add()" command<br> gained support for a \
"USES_TERMINAL_PATCH" option to give the patch<br> step exclusive \
terminal access.<br><br>* The "FindCUDAToolkit" module now provides a \
target for<br> "libcufft_static_nocallback", if found.<br><br>* The \
"FindGLUT" module now provides the "GLUT_INCLUDE_DIRS" result<br> \
variable to conform with naming conventions documented in the<br> \
"cmake-developer(7)" manual. This supersedes the legacy<br> \
"GLUT_INCLUDE_DIR" variable.<br><br>* The "FindGTest" module now \
provides a target for GMock, if found.<br><br>* The "FindVulkan" module now \
provides a "Vulkan_VERSION" result<br> variable reporting the version \
number.<br><br><br>CTest<br>-----<br><br>* "ctest(1)" gained a new \
"CTEST_SUBMIT_INACTIVITY_TIMEOUT" variable,<br> which can be used to \
specify a timeout for submission inactivity.<br><br><br>CPack<br>-----<br><br>* The \
"CPack productbuild Generator" gained the new<br> \
"CPACK_PRODUCTBUILD_DOMAINS", \
"CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE",<br> \
"CPACK_PRODUCTBUILD_DOMAINS_USER", and<br> \
"CPACK_PRODUCTBUILD_DOMAINS_ROOT" variables for adding the domains<br> \
element to the Distribution XML.<br><br>* The "CPack productbuild \
Generator" gained a new variable,<br> \
"CPACK_PRODUCTBUILD_IDENTIFIER", used to customize the unique<br> product \
identifier associated with the product.<br><br>* The "CPack IFW Generator" \
gained the new "CPACK_IFW_ARCHIVE_FORMAT"<br> and \
"CPACK_IFW_ARCHIVE_COMPRESSION" variables for setting the format<br> used \
when packaging new component data archives, and choosing the<br> compression level \
used. These features are available for QtIFW 4.2<br> and newer.<br><br>* The \
"CPack IFW Generator" gained new<br> \
"CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE" variable to<br> \
prevent the user from passing any consumer command to the installer,<br> like \
"install", "update", and "remove". This feature is \
available<br> for QtIFW 4.0 and newer.<br><br>* The "CPack IFW Generator" \
gained the new<br> "CPACK_IFW_PACKAGE_PRODUCT_IMAGES" variable for adding \
a list of<br> images to be shown on the "PerformInstallationPage". This \
feature is<br> available for QtIFW 4.0 and newer.<br><br>* The "CPack IFW \
Generator" gained the new<br> "CPACK_IFW_PACKAGE_RUN_PROGRAM",<br> \
"CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS", and<br> \
"CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION" variables for executing<br> a \
command after the installer is done if the user accepts the<br> action. This \
feature is available for QtIFW 4.0 and newer.<br><br>* The "CPack IFW \
Generator" gained the new<br> "CPACK_IFW_PACKAGE_SIGNING_IDENTITY" \
variable for specifying a code<br> signing identity to be used for signing the \
generated app bundle.<br> This feature is available on macOS only, and for QtIFW \
3.0 and<br> newer.<br><br>* The "CPack WIX Generator" gained a new \
variable,<br> "CPACK_WIX_SKIP_WIX_UI_EXTENSION", to skip the inclusion \
of<br> WixUIExtensions.<br><br><br>Deprecated and Removed \
Features<br>===============================<br><br>* The "cpack(1)" \
undocumented "OSXX11" generator has been removed.<br><br><br>Other \
Changes<br>=============<br><br>* The "CPack DragNDrop Generator" no longer \
attaches<br> "CPACK_RESOURCE_FILE_LICENSE" as the license agreement in \
the<br> generated ".dmg" unless explicitly activated by a<br> \
"CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE" option. In CMake projects,<br> \
the "CPack" module enables the option by default for \
compatibility.<br><br>* "CUDA" targets may now enable both \
"CUDA_SEPARABLE_COMPILATION" and<br> \
"CUDA_PTX_COMPILATION".<br><br>* "CUDA" compiler detection \
now:<br><br> * issues an error in all cases when it's unable to compute the<br> \
default architecture(s) if required (see "CMP0104"),<br><br> * handles \
"OFF" for "CMAKE_CUDA_ARCHITECTURES" on Clang,<br><br> * \
supports the theoretical case of multiple default architectures,<br> and<br><br> \
* tries to detect invalid architectures and issue an error.<br><br>* "CUDA" \
with Clang now implements policy "CMP0105" and the<br> \
"$<DEVICE_LINK:...>" and "$<HOST_LINK:...>" \
"generator expressions".<br><br>* The "define_property()" \
command's "BRIEF_DOCS" and "FULL_DOCS"<br> arguments are \
now optional.<br><br>* "ccmake(1)" may now be enabled on Windows when \
building CMake from<br> source. This is experimental, and so is not included in \
official<br> distributions.<br></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic