--000000000000f4e40305d78585a8 Content-Type: text/plain; charset="UTF-8" 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=" 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_" 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 "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 "$" 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. --000000000000f4e40305d78585a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I am proud to announce the first CMake 3.23 release candid= ate.
=C2=A0 ht= tps://cmake.org/download/

Documentation is available at:
=C2= =A0 https:= //cmake.org/cmake/help/v3.23

Release notes appear below and are = also published at
=C2=A0 https://cmake.org/cmake/help/v3.23/rele= ase/3.23.html

Some of the more significant changes in CMake 3.23= are:

* "cmake-presets(7)" files now have an optional &quo= t;include" field, which
=C2=A0 allows the files to include other fi= les.

* The Visual Studio Generators for VS 2019 and above learned to=
=C2=A0 support .NET SDK-style project files (".csproj") for C= # projects.
=C2=A0 See the "DOTNET_SDK" target property and co= rresponding
=C2=A0 "CMAKE_DOTNET_SDK" variable. =C2=A0"ad= d_custom_command()" is not yet
=C2=A0 supported in .NET SDK-style p= rojects.

* The IBM Open XL C/C++ compiler, based on LLVM, is now sup= ported with
=C2=A0 compiler id "IBMClang".

* The MCST L= CC compiler is now supported with compiler id "LCC". See
=C2= =A0 policy "CMP0129".

* The "install(TARGETS)" c= ommand gained a new "FILE_SET" argument,
=C2=A0 which can be u= sed to install header file sets associated with a
=C2=A0 target.

= * The "target_sources()" command gained a new "FILE_SET"= ; mode, which
=C2=A0 can be used to add headers as header-only source fi= les of a target.

* The "CMAKE_CUDA_ARCHITECTURES" variable= and associated
=C2=A0 "CUDA_ARCHITECTURES" target property no= w support the "all", and
=C2=A0 "all-major" values f= or CUDA toolkit 7.0+.


CMake 3.23 Release Notes
**************= **********

Changes made since CMake 3.22 include the following.
<= br>
New Features
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


Pres= ets
-------

* "cmake-presets(7)" files now support sche= ma version "4".

* "cmake-presets(7)" files now h= ave an optional "include" field, which
=C2=A0 allows the files= to include other files.

* "cmake-presets(7)" gained suppo= rt for specifying the
=C2=A0 "resolvePackageReferences" comman= d line option in a build preset.


Generators
----------
* The Visual Studio Generators for VS 2019 and above learned to
=C2=A0 = support .NET SDK-style project files (".csproj") for C# projects.=
=C2=A0 See the "DOTNET_SDK" target property and corresponding=
=C2=A0 "CMAKE_DOTNET_SDK" variable. =C2=A0"add_custom_co= mmand()" is not yet
=C2=A0 supported in .NET SDK-style projects.
* The Visual Studio Generators for VS 2017 and above learned to use=C2=A0 portable instances of Visual Studio not known to the VS installer.<= br>=C2=A0 See the "CMAKE_GENERATOR_INSTANCE" variable.

Command-Line
------------

* The "cmake(1)" "--bui= ld" command, when used with Visual Studio
=C2=A0 Generators on proj= ects that set the "VS_PACKAGE_REFERENCES" target
=C2=A0 proper= ty, now automatically restores package references from NuGet.
=C2=A0 The= cache variable "CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to=C2=A0 toggle this behavior in a build tree.=C2=A0 Use the "--resolve= -package-
=C2=A0 references=3D<on|off|only>" command-line opt= ion to control the
=C2=A0 behavior on one invocation.

* The "= ;cmake(1)" command line tool gained a "--debug-find-pkg=3D" = option
=C2=A0 to enable debug messages under specific "find_package= ()" calls.

* The "cmake(1)" command line tool gained = a "--debug-find-var=3D" option
=C2=A0 to enable debug messages= for "find_*" calls that use specific result
=C2=A0 variables.=


Compilers
---------

* The IBM Open XL C/C++ compiler,= based on LLVM, is now supported with
=C2=A0 compiler id "IBMClang&= quot;.

* The MCST LCC compiler is now supported with compiler id &qu= ot;LCC". See
=C2=A0 policy "CMP0129".


File-Bas= ed API
--------------

* The "cmake-file-api(7)" "c= odemodel" version 2 "version" field has
=C2=A0 been updat= ed to "2.4".

* The "cmake-file-api(7)" "cod= emodel" version 2 "directory" object
=C2=A0 "install= ers" field gained a new "fileSet" installer type.

Commands
--------

* The "define_property()" command ga= ined a new
=C2=A0 "INITIALIZE_FROM_VARIABLE" option to cause a= target property to be
=C2=A0 initialized from a variable when a target = is created.

* The "install(TARGETS)" command gained a new = "FILE_SET" argument,
=C2=A0 which can be used to install heade= r file sets associated with a
=C2=A0 target.

* The "string(T= IMESTAMP)" and "file(TIMESTAMP)" commands now support
=C2= =A0 the "%f" specifier for microseconds.

* The "targe= t_sources()" command gained a new "FILE_SET" mode, which
= =C2=A0 can be used to add headers as header-only source files of a target.<= br>

Variables
---------

* The "CMAKE_CUDA_ARCHITECTUR= ES" variable and associated
=C2=A0 "CUDA_ARCHITECTURES" t= arget property now support the "all", and
=C2=A0 "all-maj= or" values for CUDA toolkit 7.0+.

* The "CMAKE_IGNORE_PREF= IX_PATH" and "CMAKE_SYSTEM_IGNORE_PREFIX_PATH"
=C2=A0 var= iables were added to tell the "find_package()", "find_progra= m()",
=C2=A0 "find_library()", "find_path()", a= nd "find_file()" commands to
=C2=A0 ignore specified prefixes.=

* The "CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and co= rresponding
=C2=A0 "LINK_LIBRARIES_ONLY_TARGETS" target proper= ty were added to
=C2=A0 optionally require that all link items that can = be target names are
=C2=A0 actually names of existing targets.

Properties
----------

* The "HEADER_SETS" and "I= NTERFACE_HEADER_SETS" target properties were
=C2=A0 added to list h= eader sets associated with a target.

* The "HEADER_SET" an= d "HEADER_SET_<NAME>" target properties were
=C2=A0 adde= d to list files in the default header set and named header sets,
=C2=A0 = respectively.

* The "HEADER_DIRS" and "HEADER_DIRS_&l= t;NAME>" target properties were
=C2=A0 added to specify the base= directories of the default header set and
=C2=A0 named header sets, res= pectively.

* The "IMPORTED_NO_SYSTEM" target property was = added to specify that
=C2=A0 an Imported Target should not be treated as= a system library (i.e.
=C2=A0 its include directories are not automatic= ally "SYSTEM").

* The "INTERFACE_LINK_LIBRARIES_DIREC= T" and
=C2=A0 "INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" t= arget properties were
=C2=A0 added to express usage requirements affecti= ng a consumer's direct
=C2=A0 link dependencies.

* The "= XCODE_EMBED_PLUGINS" target property was added to tell the
=C2=A0 &= quot;Xcode" generator what targets to put in the "Embed PlugIns&q= uot; build
=C2=A0 phase.

* The "XCODE_SCHEME_ENABLE_GPU_FRAM= E_CAPTURE_MODE" target property and
=C2=A0 supporting "CMAKE_X= CODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE"
=C2=A0 variable were add= ed to tell the "Xcode" generator to enable
=C2=A0 specifying t= he Xcode scheme option property "GPU Frame Capture".


M= odules
-------

* The "CheckPIESupported" module now sup= ports the "OBJC", "OBJCXX",
=C2=A0 "CUDA",= and "HIP" languages.=C2=A0 It also now honors "CMAKE_SYSROO= T" and
=C2=A0 "CMAKE_OSX_SYSROOT".

* The "Ext= ernalProject" module's "ExternalProject_Add()" command=C2=A0 gained support for a "USES_TERMINAL_PATCH" option to giv= e the patch
=C2=A0 step exclusive terminal access.

* The "Fi= ndCUDAToolkit" module now provides a target for
=C2=A0 "libcuf= ft_static_nocallback", if found.

* The "FindGLUT" mod= ule now provides the "GLUT_INCLUDE_DIRS" result
=C2=A0 variabl= e to conform with naming conventions documented in the
=C2=A0 "cmak= e-developer(7)" manual.=C2=A0 This supersedes the legacy
=C2=A0 &qu= ot;GLUT_INCLUDE_DIR" variable.

* The "FindGTest" modu= le now provides a target for GMock, if found.

* The "FindVulkan= " module now provides a "Vulkan_VERSION" result
=C2=A0 va= riable reporting the version number.


CTest
-----

* &qu= ot;ctest(1)" gained a new "CTEST_SUBMIT_INACTIVITY_TIMEOUT" = variable,
=C2=A0 which can be used to specify a timeout for submission i= nactivity.


CPack
-----

* The "CPack productbuild = Generator" gained the new
=C2=A0 "CPACK_PRODUCTBUILD_DOMAINS&q= uot;, "CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE",
=C2=A0 "CPAC= K_PRODUCTBUILD_DOMAINS_USER", and
=C2=A0 "CPACK_PRODUCTBUILD_D= OMAINS_ROOT" variables for adding the domains
=C2=A0 element to the= Distribution XML.

* The "CPack productbuild Generator" ga= ined a new variable,
=C2=A0 "CPACK_PRODUCTBUILD_IDENTIFIER", u= sed to customize the unique
=C2=A0 product identifier associated with th= e product.

* The "CPack IFW Generator" gained the new &quo= t;CPACK_IFW_ARCHIVE_FORMAT"
=C2=A0 and "CPACK_IFW_ARCHIVE_COMP= RESSION" variables for setting the format
=C2=A0 used when packagin= g new component data archives, and choosing the
=C2=A0 compression level= used. These features are available for QtIFW 4.2
=C2=A0 and newer.
<= br>* The "CPack IFW Generator" gained new
=C2=A0 "CPACK_I= FW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE" variable to
=C2=A0 preve= nt the user from passing any consumer command to the installer,
=C2=A0 l= ike "install", "update", and "remove". This f= eature is available
=C2=A0 for QtIFW 4.0 and newer.

* The "C= Pack IFW Generator" gained the new
=C2=A0 "CPACK_IFW_PACKAGE_P= RODUCT_IMAGES" variable for adding a list of
=C2=A0 images to be sh= own on the "PerformInstallationPage". This feature is
=C2=A0 a= vailable for QtIFW 4.0 and newer.

* The "CPack IFW Generator&qu= ot; gained the new
=C2=A0 "CPACK_IFW_PACKAGE_RUN_PROGRAM",
= =C2=A0 "CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS", and
=C2=A0 &= quot;CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION" variables for executin= g
=C2=A0 a command after the installer is done if the user accepts the=C2=A0 action.=C2=A0 This feature is available for QtIFW 4.0 and newer.
* The "CPack IFW Generator" gained the new
=C2=A0 "= CPACK_IFW_PACKAGE_SIGNING_IDENTITY" variable for specifying a code
= =C2=A0 signing identity to be used for signing the generated app bundle.=C2=A0 This feature is available on macOS only, and for QtIFW 3.0 and
= =C2=A0 newer.

* The "CPack WIX Generator" gained a new var= iable,
=C2=A0 "CPACK_WIX_SKIP_WIX_UI_EXTENSION", to skip the i= nclusion of
=C2=A0 WixUIExtensions.


Deprecated and Removed Fe= atures
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

* The "cpack(1)" undocument= ed "OSXX11" generator has been removed.


Other Changes<= br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

* The "CPack DragNDr= op Generator" no longer attaches
=C2=A0 "CPACK_RESOURCE_FILE_L= ICENSE" as the license agreement in the
=C2=A0 generated ".dmg= " unless explicitly activated by a
=C2=A0 "CPACK_DMG_SLA_USE_R= ESOURCE_FILE_LICENSE" option. In CMake projects,
=C2=A0 the "C= Pack" module enables the option by default for compatibility.

*= "CUDA" targets may now enable both "CUDA_SEPARABLE_COMPILAT= ION" and
=C2=A0 "CUDA_PTX_COMPILATION".

* "CU= DA" compiler detection now:

=C2=A0 * issues an error in all cas= es when it's unable to compute the
=C2=A0 =C2=A0 default architectur= e(s) if required (see "CMP0104"),

=C2=A0 * handles "O= FF" for "CMAKE_CUDA_ARCHITECTURES" on Clang,

=C2=A0 *= supports the theoretical case of multiple default architectures,
=C2=A0= =C2=A0 and

=C2=A0 * tries to detect invalid architectures and issue= an error.

* "CUDA" with Clang now implements policy "= ;CMP0105" and the
=C2=A0 "$<DEVICE_LINK:...>" and &= quot;$<HOST_LINK:...>" "generator expressions".
* The "define_property()" command's "BRIEF_DOCS" a= nd "FULL_DOCS"
=C2=A0 arguments are now optional.

* &qu= ot;ccmake(1)" may now be enabled on Windows when building CMake from=C2=A0 source.=C2=A0 This is experimental, and so is not included in offi= cial
=C2=A0 distributions.
--000000000000f4e40305d78585a8--