CMake 3.23 Release Notes — CMake 3.23.5 Documentation
index
next
previous
CMake
3.23.5
Documentation
CMake Release Notes
CMake 3.23 Release Notes
This documents an old version of CMake.
Click here to see the latest release.
CMake 3.23 Release Notes
Contents
CMake 3.23 Release Notes
New Features
Presets
Generators
Command-Line
Compilers
File-Based API
Commands
Variables
Properties
Modules
CTest
CPack
Deprecated and Removed Features
Other Changes
Updates
3.23.1
3.23.2
3.23.3, 3.23.4, 3.23.5
Changes made since CMake 3.22 include the following.
New Features
Presets
cmake-presets(7)
files now support schema version
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=
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
read-only
target properties were added to list header sets associated with a target.
The
HEADER_SET
and
HEADER_SET_
target
properties were added to list files in the default header set
and named header sets, respectively.
The
HEADER_DIRS
and
HEADER_DIRS_
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.distribution.dist.in
template used by the
CPack
productbuild
Generator
and
CPack
PackageMaker
Generator
was updated to use a new
CPACK_APPLE_PKG_INSTALLER_CONTENT
variable for its main content.
This replaced the previously undocumented and now deprecated
CPACK_PACKAGEMAKER_CHOICES
variable.
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.
The previously undocumented
CPACK_PACKAGEMAKER_CHOICES
variable used in
the
CPack.distribution.dist.in
template has been replaced by a new
CPACK_APPLE_PKG_INSTALLER_CONTENT
variable. This only affects projects
that were providing their own custom
CPack.distribution.dist.in
template
file, but still relied on
CPACK_PACKAGEMAKER_CHOICES
being set. Those
custom template files should be updated to use
CPACK_APPLE_PKG_INSTALLER_CONTENT
instead, or to fully define all the
template file's contents without relying on substitution of either variable.
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
$
and
$
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.
Updates
Changes made since CMake 3.23.0 include the following.
3.23.1
The
target_sources()
FILE_SET
feature added in CMake 3.23.0
does not yet place header files properly in Apple
FRAMEWORK
targets. Pending further work in a future version of CMake, it is now
an error to add a
FILE_SET
of type
HEADERS
to such targets on
Apple platforms.
The
HEADER_SETS
and
INTERFACE_HEADER_SETS
target
properties added in CMake 3.23.0 are now read-only records of the header
sets created by the
target_sources()
command.
3.23.2
The
CPACK_PACKAGEMAKER_CHOICES
variable used in the
CPack.distribution.dist.in
template file was replaced by a new
CPACK_APPLE_PKG_INSTALLER_CONTENT
variable in CMake 3.23.0.
This broke projects that provided their own template file but still
expected the
CPACK_PACKAGEMAKER_CHOICES
variable to be defined.
The old
CPACK_PACKAGEMAKER_CHOICES
variable is now also set to the
same content as it was before, but it is formally deprecated.
3.23.3, 3.23.4, 3.23.5
These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.
Table of Contents
CMake 3.23 Release Notes
New Features
Presets
Generators
Command-Line
Compilers
File-Based API
Commands
Variables
Properties
Modules
CTest
CPack
Deprecated and Removed Features
Other Changes
Updates
3.23.1
3.23.2
3.23.3, 3.23.4, 3.23.5
Previous topic
CMake Release Notes
Next topic
CMake 3.22 Release Notes
This Page
Show Source
Quick search
index
next
previous
CMake
3.23.5
Documentation
CMake Release Notes
CMake 3.23 Release Notes
© Copyright 2000-2022 Kitware, Inc. and Contributors.
Created using
Sphinx
4.1.2.
US