[ANNOUNCE] CMake 3.23.0-rc5 is ready for testing
Tom Osika
tom.osika at kitware.com
Wed Mar 23 17:02:04 GMT 2022
I am proud to announce the fifth 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)" files now support a "${fileDir}" macro, which
contains the directory containing the preset file.
* "cmake-presets(7)" gained support for specifying the
"resolvePackageReferences" command line option in a build preset to
control restoration behavior of package references from external
package managers. Currently this is only supported by the Visual
Studio generator to support restoring packages from NuGet. Other
generators ignore this option.
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 "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. With these variables, it is now
possible to install products to the user's home directory without
requiring administrative privileges.
* 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
===============================
* "cmake(1)" now warns when multiple source paths are specified, as in
"cmake -S src1 src2". This has never been officially documented or
supported, but older versions accidentally accepted multiple source
paths and used the last path specified. Update scripts to avoid
passing multiple source path arguments.
* 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.
----------------------------------------------------------------------------
Changes made since CMake 3.23.0-rc4:
Brad King (4):
Utilities/Release: Add "source" stage to Windows docker spec
Revert INTERFACE_LINK_LIBRARIES_DIRECT feature for 3.23 branch
Help: Clarify when add_test and test properties support generator
expressions
CMake 3.23.0-rc5
Craig Scott (7):
Help: Clean up INITIALIZE_FROM_VARIABLE define_property() option
Help: Update the main purpose of define_property()
define_property(): Only test prefix if INITIALIZE_FROM_VARIABLE is given
Help: Add more detail for CPACK_PRODUCTBUILD_DOMAINS* variables
productbuild: Simplify internal CPACK_PRODUCTBUILD_DOMAINS usage
CPack: Avoid space / tab mix in productbuild distribution.xml template
productbuild: Don't write rootVolumeOnly attribute if writing domains
Kyle Edwards (1):
define_property(): Change constraints of INITIALIZE_FROM_VARIABLE
Marc Jeanmougin (2):
CPack/NSIS: Fix uninstall command when run from installer
CPack/NSIS: Add support for unquoted (legacy) uninstaller strings
Robert Maynard (2):
FindCUDAToolkit: Add missing cufftw_static target
Help: Better cross-reference CMAKE_FIND_NO_INSTALL_PREFIX
Øystein Sørensen (1):
Tutorial: Fix casing of reference to License.txt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-devel/attachments/20220323/dce87536/attachment-0001.htm>
More information about the kde-devel
mailing list