[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: [ANNOUNCE] CMake 3.28.0-rc2 is ready for testing
From: John Parent <john.parent () kitware ! com>
Date: 2023-10-18 20:58:29
Message-ID: CAN7YEFcugC+LTJFsebnGbQm3J-OoVN65X779rFWfGa8m767vwg () mail ! gmail ! com
[Download RAW message or body]
I am proud to announce the second CMake 3.28 release candidate.
https://cmake.org/download/
Documentation is available at:
https://cmake.org/cmake/help/v3.28
Release notes appear below and are also published at
https://cmake.org/cmake/help/v3.28/release/3.28.html
Some of the more significant changes in CMake 3.28 are:
* C++ 20 named modules are now supported by Ninja Generators and
Visual Studio Generators for VS 2022 and newer, in combination with
the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and
newer. See "cmake-cxxmodules(7)" for details.
* "HIP" language code may now be compiled for NVIDIA GPUs using the
NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.
* On Apple platforms, ".xcframework" folders are now supported.
* The "exec_program()" command, which has been deprecated since CMake
3.0, has been removed by policy "CMP0153". Use the
"execute_process()" command instead.
* Generated files, in targets using File Sets, are now considered
private by default. Generated public headers must be specified
using file sets. This allows Ninja Generators to produce more
efficient build graphs. See policy "CMP0154".
* The "find_library()", "find_path()", and "find_file()" commands no
longer search in installation prefixes derived from the "PATH"
environment variable. This behavior was added in CMake 3.3 to
support MSYS and MinGW ("MSYSTEM") development environments on
Windows, but it can search undesired prefixes that happen to be in
the "PATH" for unrelated reasons. Users who keep some
"<prefix>/bin" directories in the "PATH" just for their tools do not
necessarily want any corresponding "<prefix>/lib" or
"<prefix>/include" directories searched. The behavior was reverted
for non-Windows platforms by CMake 3.6. Now it has been reverted on
Windows platforms too.
CMake 3.28 Release Notes
************************
Changes made since CMake 3.27 include the following.
New Features
============
Languages
---------
* C++ 20 named modules are now supported by Ninja Generators and
Visual Studio Generators for VS 2022 and newer, in combination with
the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang
16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and
newer. See "cmake-cxxmodules(7)" for details.
* "HIP" language code may now be compiled for NVIDIA GPUs using the
NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.
Platforms
---------
* On Apple platforms, ".xcframework" folders are now supported:
* The "find_library()" command now finds ".xcframework" folders.
* The "target_link_libraries()" command now supports linking against
a ".xcframework" folder.
* The "IMPORTED_LOCATION" target property of an imported library
target may now be the path to a ".xcframework" folder.
* Apple visionOS and its "xros" and "xrsimulator" SDKs are now
supported. Compiling for Apple visionOS can be requested by setting
"CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for iOS,
tvOS, visionOS, or watchOS for more information.
Presets
-------
* "cmake-presets(7)" files now support schema version "8". It adds
support for a "$schema" field.
Compilers
---------
* Cray Clang-based compilers are now supported with "compiler id"
"CrayClang".
* The OrangeC compiler is now supported with "compiler id" "OrangeC".
Commands
--------
* The "add_custom_command()" and "add_custom_target()" commands gained
a "JOB_SERVER_AWARE" option.
* The "cmake_host_system_information()" command gained a
"MSYSTEM_PREFIX" query for the installation prefix of a MSYS or
MinGW development environment on Windows hosts.
* The "set_property()" command "TEST" mode gained a "DIRECTORY" option
to set properties on tests in other directories.
* The "set_tests_properties()" command gained a "DIRECTORY" option to
set properties on tests in other directories.
* The "get_property()" command "TEST" mode gained a "DIRECTORY" option
to get properties on tests in other directories.
* The "get_test_property()" command gained a "DIRECTORY" option to get
properties on tests in other directories.
Variables
---------
* The "CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added
to initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.
* The "CMAKE_HIP_PLATFORM" variable was added to specify the GPU
platform for which HIP language sources are to be compiled ("amd" or
"nvidia").
Properties
----------
* On imported shared libraries, the "IMPORTED_IMPLIB" target property
may now be used without "IMPORTED_LOCATION". This can be used to
represent a stub library whose location should not be added as a
runtime search path to dependents that link it.
* The "IMPORTED_LOCATION" property of a macOS framework may now be a
path to the ".framework" folder itself.
* The "XCODE_EMBED_RESOURCES" target property was added to tell the
"Xcode" generator what targets to put in the "Embed Resources" build
phase.
Modules
-------
* The "ExternalProject" module now includes the
"BUILD_JOB_SERVER_AWARE" option for the "ExternalProject_Add()"
command. This option enables the integration of the GNU Make job
server when using an explicit "BUILD_COMMAND" with certain Makefile
Generators. Additionally, the "ExternalProject_Add_Step()" command
has been updated to support the new "JOB_SERVER_AWARE" option.
* The "ExternalProject" module now declares "BYPRODUCTS" for the
downloaded file for generated "download" steps. Previously, if
multiple external projects downloaded to the same file, hash
verification could fail. Now, when using the Ninja Generators, this
scenario is detected and Ninja will raise an error stating that
multiple rules generate the same file.
* The "FetchContent" module's "FetchContent_Declare()" command gained
an "EXCLUDE_FROM_ALL" option, which propagates through to the
"add_subdirectory()" call made by "FetchContent_MakeAvailable()" for
the dependency.
* The "FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to select
static libraries.
* The "FindEXPAT" module gained an "EXPAT_USE_STATIC_LIBS" hint to
select static libraries.
* The "FindPkgConfig" module "pkg_get_variable()" command gained a
"DEFINE_VARIABLES" option to pass variables to "pkg-config".
Generator Expressions
---------------------
* The "generator expressions" "$<IF:...>", "$<AND:...>", and
"$<OR:...>" short-circuit to avoid unnecessary evaluation of
parameters.
CTest
-----
* CTest may now take a dynamically-generated resource spec file, which
can be specified by the "GENERATED_RESOURCE_SPEC_FILE" test
property.
Deprecated and Removed Features
===============================
* The "exec_program()" command, which has been deprecated since CMake
3.0, has been removed by policy "CMP0153". Use the
"execute_process()" command instead.
* The "Visual Studio 11 2012" generator has been removed.
* The "Visual Studio 12 2013" generator is now deprecated and will be
removed in a future version of CMake.
* The "IOS_INSTALL_COMBINED" target property and corresponding
"CMAKE_IOS_INSTALL_COMBINED" variable have been deprecated. Their
functionality does not make sense on Apple Silicon hosts.
* The "Xcode" generator will now issue a fatal error if the Legacy
Build System has been selected for Xcode 14 and newer. Those Xcode
versions dropped support for the Legacy Build System and expect the
project to be set-up for their current Build System.
Other Changes
=============
* Generated files, in targets using File Sets, are now considered
private by default. Generated public headers must be specified
using file sets. This allows Ninja Generators to produce more
efficient build graphs. See policy "CMP0154".
* The "find_library()", "find_path()", and "find_file()" commands no
longer search in installation prefixes derived from the "PATH"
environment variable. This behavior was added in CMake 3.3 to
support MSYS and MinGW ("MSYSTEM") development environments on
Windows, but it can search undesired prefixes that happen to be in
the "PATH" for unrelated reasons. Users who keep some
"<prefix>/bin" directories in the "PATH" just for their tools do not
necessarily want any corresponding "<prefix>/lib" or
"<prefix>/include" directories searched. The behavior was reverted
for non-Windows platforms by CMake 3.6. Now it has been reverted on
Windows platforms too.
One may set the "CMAKE_PREFIX_PATH" environment variable with a
semicolon-separated list of prefixes that are to be searched.
* When using MinGW tools in a "MSYSTEM" environment on Windows, the
"$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now added
to "CMAKE_SYSTEM_PREFIX_PATH".
* The precompiled Linux "x86_64" binaries provided on cmake.org now
require GLIBC 2.17 or higher.
----------------------------------------------------------------------------
Changes made since CMake 3.28.0-rc1:
Ben Boeckel (6):
Tests/NinjaPrivateDeps: fix error message for Build-PrivateFileSet-check
cxxmodules: include `INCLUDES DESTINATION` directories
FlagTables: `-ifcOutput` takes a subsequent argument
FlagTables: Add entries for cl -scanDependencies flag
VS: Explicitly disallow C++ modules provided by imported targets
Tests/CXXModules: test Visual Studio synthetic target error
Brad King (5):
curl: Update script to get curl 8.4.0
curl: Set build options the way we need for CMake
Utilities: Update hard-coded try_compile results for curl 8.4.0
curl: Backport SOCKS5 heap buffer overflow fix from curl 8.4.0
CMake 3.28.0-rc2
Curl Upstream (1):
curl 2023-10-11 (d755a5f7)
Kyle Edwards (1):
execute_process(): Restore opening files relative to WORKING_DIRECTORY
Orkun Tokdemir (2):
Tests: Revert "NinjaMultiConfig: Update tests for the new dependency
change"
Autogen: Revert "AUTO*_EXECUTABLE: add support for per-config values"
Zack Galbreath (1):
ctest: Restore support for http redirects during Submit step
scivision (1):
bootstrap: update known compilers
مهدي شينون (Mehdi Chinoune) (1):
PGI/NVHPC: Remove -Mipa compiler option for 23.3+
[Attachment #3 (text/html)]
<div dir="ltr">I am proud to announce the second CMake 3.28 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.28" \
target="_blank">https://cmake.org/cmake/help/v3.28</a><br><br>Release notes appear \
below and are also published at<br> <a \
href="https://cmake.org/cmake/help/v3.28/release/3.28.html" \
target="_blank">https://cmake.org/cmake/help/v3.28/release/3.28.html</a><br><br>Some \
of the more significant changes in CMake 3.28 are:<br><br>* C++ 20 named modules are \
now supported by Ninja Generators and<br> Visual Studio Generators for VS 2022 and \
newer, in combination with<br> the MSVC 14.34 toolset (provided with VS 17.4) and \
newer, LLVM/Clang<br> 16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) \
and<br> newer. See "cmake-cxxmodules(7)" for details.<br><br>* \
"HIP" language code may now be compiled for NVIDIA GPUs using the<br> \
NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" \
variable.<br><br>* On Apple platforms, ".xcframework" folders are now \
supported.<br><br>* The "exec_program()" command, which has been deprecated \
since CMake<br> 3.0, has been removed by policy "CMP0153". Use the<br> \
"execute_process()" command instead.<br><br>* Generated files, in targets \
using File Sets, are now considered<br> private by default. Generated public \
headers must be specified<br> using file sets. This allows Ninja Generators to \
produce more<br> efficient build graphs. See policy "CMP0154".<br><br>* \
The "find_library()", "find_path()", and "find_file()" \
commands no<br> longer search in installation prefixes derived from the \
"PATH"<br> environment variable. This behavior was added in CMake 3.3 \
to<br> support MSYS and MinGW ("MSYSTEM") development environments on<br> \
Windows, but it can search undesired prefixes that happen to be in<br> the \
"PATH" for unrelated reasons. Users who keep some<br> \
"<prefix>/bin" directories in the "PATH" just for their \
tools do not<br> necessarily want any corresponding "<prefix>/lib" \
or<br> "<prefix>/include" directories searched. The behavior was \
reverted<br> for non-Windows platforms by CMake 3.6. Now it has been reverted \
on<br> Windows platforms too.<br><br><br>CMake 3.28 Release \
Notes<br>************************<br><br>Changes made since CMake 3.27 include the \
following.<br><br><br>New \
Features<br>============<br><br><br>Languages<br>---------<br><br>* C++ 20 named \
modules are now supported by Ninja Generators and<br> Visual Studio Generators for \
VS 2022 and newer, in combination with<br> the MSVC 14.34 toolset (provided with VS \
17.4) and newer, LLVM/Clang<br> 16.0 and newer, and GCC 14 (after the 2023-09-20 \
daily bump) and<br> newer. See "cmake-cxxmodules(7)" for \
details.<br><br>* "HIP" language code may now be compiled for NVIDIA GPUs \
using the<br> NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" \
variable.<br><br><br>Platforms<br>---------<br><br>* On Apple platforms, \
".xcframework" folders are now supported:<br><br> * The \
"find_library()" command now finds ".xcframework" \
folders.<br><br> * The "target_link_libraries()" command now supports \
linking against<br> a ".xcframework" folder.<br><br> * The \
"IMPORTED_LOCATION" target property of an imported library<br> target \
may now be the path to a ".xcframework" folder.<br><br>* Apple visionOS and \
its "xros" and "xrsimulator" SDKs are now<br> supported. \
Compiling for Apple visionOS can be requested by setting<br> \
"CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for \
iOS,<br> tvOS, visionOS, or watchOS for more \
information.<br><br><br>Presets<br>-------<br><br>* "cmake-presets(7)" \
files now support schema version "8". It adds<br> support for a \
"$schema" field.<br><br><br>Compilers<br>---------<br><br>* Cray \
Clang-based compilers are now supported with "compiler id"<br> \
"CrayClang".<br><br>* The OrangeC compiler is now supported with \
"compiler id" "OrangeC".<br><br><br>Commands<br>--------<br><br>* \
The "add_custom_command()" and "add_custom_target()" commands \
gained<br> a "JOB_SERVER_AWARE" option.<br><br>* The \
"cmake_host_system_information()" command gained a<br> \
"MSYSTEM_PREFIX" query for the installation prefix of a MSYS or<br> MinGW \
development environment on Windows hosts.<br><br>* The "set_property()" \
command "TEST" mode gained a "DIRECTORY" option<br> to set \
properties on tests in other directories.<br><br>* The \
"set_tests_properties()" command gained a "DIRECTORY" option \
to<br> set properties on tests in other directories.<br><br>* The \
"get_property()" command "TEST" mode gained a \
"DIRECTORY" option<br> to get properties on tests in other \
directories.<br><br>* The "get_test_property()" command gained a \
"DIRECTORY" option to get<br> properties on tests in other \
directories.<br><br><br>Variables<br>---------<br><br>* The \
"CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added<br> to \
initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.<br><br>* The \
"CMAKE_HIP_PLATFORM" variable was added to specify the GPU<br> platform \
for which HIP language sources are to be compiled ("amd" or<br> \
"nvidia").<br><br><br>Properties<br>----------<br><br>* On imported shared \
libraries, the "IMPORTED_IMPLIB" target property<br> may now be used \
without "IMPORTED_LOCATION". This can be used to<br> represent a stub \
library whose location should not be added as a<br> runtime search path to \
dependents that link it.<br><br>* The "IMPORTED_LOCATION" property of a \
macOS framework may now be a<br> path to the ".framework" folder \
itself.<br><br>* The "XCODE_EMBED_RESOURCES" target property was added to \
tell the<br> "Xcode" generator what targets to put in the "Embed \
Resources" build<br> phase.<br><br><br>Modules<br>-------<br><br>* The \
"ExternalProject" module now includes the<br> \
"BUILD_JOB_SERVER_AWARE" option for the \
"ExternalProject_Add()"<br> command. This option enables the integration \
of the GNU Make job<br> server when using an explicit "BUILD_COMMAND" \
with certain Makefile<br> Generators. Additionally, the \
"ExternalProject_Add_Step()" command<br> has been updated to support the \
new "JOB_SERVER_AWARE" option.<br><br>* The "ExternalProject" \
module now declares "BYPRODUCTS" for the<br> downloaded file for \
generated "download" steps. Previously, if<br> multiple external projects \
downloaded to the same file, hash<br> verification could fail. Now, when using the \
Ninja Generators, this<br> scenario is detected and Ninja will raise an error \
stating that<br> multiple rules generate the same file.<br><br>* The \
"FetchContent" module's "FetchContent_Declare()" command \
gained<br> an "EXCLUDE_FROM_ALL" option, which propagates through to \
the<br> "add_subdirectory()" call made by \
"FetchContent_MakeAvailable()" for<br> the dependency.<br><br>* The \
"FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to \
select<br> static libraries.<br><br>* The "FindEXPAT" module gained an \
"EXPAT_USE_STATIC_LIBS" hint to<br> select static libraries.<br><br>* The \
"FindPkgConfig" module "pkg_get_variable()" command gained a<br> \
"DEFINE_VARIABLES" option to pass variables to \
"pkg-config".<br><br><br>Generator \
Expressions<br>---------------------<br><br>* The "generator expressions" \
"$<IF:...>", "$<AND:...>", and<br> \
"$<OR:...>" short-circuit to avoid unnecessary evaluation of<br> \
parameters.<br><br><br>CTest<br>-----<br><br>* CTest may now take a \
dynamically-generated resource spec file, which<br> can be specified by the \
"GENERATED_RESOURCE_SPEC_FILE" test<br> property.<br><br><br>Deprecated \
and Removed Features<br>===============================<br><br>* The \
"exec_program()" command, which has been deprecated since CMake<br> 3.0, \
has been removed by policy "CMP0153". Use the<br> \
"execute_process()" command instead.<br><br>* The "Visual Studio 11 \
2012" generator has been removed.<br><br>* The "Visual Studio 12 2013" \
generator is now deprecated and will be<br> removed in a future version of \
CMake.<br><br>* The "IOS_INSTALL_COMBINED" target property and \
corresponding<br> "CMAKE_IOS_INSTALL_COMBINED" variable have been \
deprecated. Their<br> functionality does not make sense on Apple Silicon \
hosts.<br><br>* The "Xcode" generator will now issue a fatal error if the \
Legacy<br> Build System has been selected for Xcode 14 and newer. Those Xcode<br> \
versions dropped support for the Legacy Build System and expect the<br> project to \
be set-up for their current Build System.<br><br><br>Other \
Changes<br>=============<br><br>* Generated files, in targets using File Sets, are \
now considered<br> private by default. Generated public headers must be \
specified<br> using file sets. This allows Ninja Generators to produce more<br> \
efficient build graphs. See policy "CMP0154".<br><br>* The \
"find_library()", "find_path()", and "find_file()" \
commands no<br> longer search in installation prefixes derived from the \
"PATH"<br> environment variable. This behavior was added in CMake 3.3 \
to<br> support MSYS and MinGW ("MSYSTEM") development environments on<br> \
Windows, but it can search undesired prefixes that happen to be in<br> the \
"PATH" for unrelated reasons. Users who keep some<br> \
"<prefix>/bin" directories in the "PATH" just for their \
tools do not<br> necessarily want any corresponding "<prefix>/lib" \
or<br> "<prefix>/include" directories searched. The behavior was \
reverted<br> for non-Windows platforms by CMake 3.6. Now it has been reverted \
on<br> Windows platforms too.<br><br> One may set the \
"CMAKE_PREFIX_PATH" environment variable with a<br> semicolon-separated \
list of prefixes that are to be searched.<br><br>* When using MinGW tools in a \
"MSYSTEM" environment on Windows, the<br> \
"$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now \
added<br> to "CMAKE_SYSTEM_PREFIX_PATH".<br><br>* The precompiled Linux \
"x86_64" binaries provided on <a href="http://cmake.org/" \
target="_blank">cmake.org</a> now<br> require GLIBC 2.17 or \
higher.<br><br>----------------------------------------------------------------------------<br>Changes \
made since CMake 3.28.0-rc1:<br><br>Ben Boeckel (6):<br> Tests/NinjaPrivateDeps: \
fix error message for Build-PrivateFileSet-check<br> cxxmodules: include `INCLUDES \
DESTINATION` directories<br> FlagTables: `-ifcOutput` takes a subsequent \
argument<br> FlagTables: Add entries for cl -scanDependencies flag<br> VS: \
Explicitly disallow C++ modules provided by imported targets<br> Tests/CXXModules: \
test Visual Studio synthetic target error<br><br>Brad King (5):<br> curl: Update \
script to get curl 8.4.0<br> curl: Set build options the way we need for CMake<br> \
Utilities: Update hard-coded try_compile results for curl 8.4.0<br> curl: Backport \
SOCKS5 heap buffer overflow fix from curl 8.4.0<br> CMake 3.28.0-rc2<br><br>Curl \
Upstream (1):<br> curl 2023-10-11 (d755a5f7)<br><br>Kyle Edwards (1):<br> \
execute_process(): Restore opening files relative to WORKING_DIRECTORY<br><br>Orkun \
Tokdemir (2):<br> Tests: Revert "NinjaMultiConfig: Update tests for the new \
dependency change"<br> Autogen: Revert "AUTO*_EXECUTABLE: add support for \
per-config values"<br><br>Zack Galbreath (1):<br> ctest: Restore support for \
http redirects during Submit step<br><br>scivision (1):<br> bootstrap: update known \
compilers<br><br>مهدي شينون (Mehdi Chinoune) (1):<br> PGI/NVHPC: Remove \
-Mipa compiler option for 23.3+<br></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic