[ANNOUNCE] CMake 3.26.0-rc6 is ready for testing

John Parent john.parent at kitware.com
Wed Mar 8 20:45:00 GMT 2023


I am proud to announce the sixth CMake 3.26 release candidate.
  https://cmake.org/download/

Documentation is available at:
  https://cmake.org/cmake/help/v3.26

Release notes appear below and are also published at
  https://cmake.org/cmake/help/v3.26/release/3.26.html

Some of the more significant changes in CMake 3.26 are:

* The "ASM_MARMASM" language was added to support the Microsoft ARM
  assembler language.

* CMake now writes a YAML log of configure-time checks to
  "CMakeFiles/CMakeConfigureLog.yaml" under the top of the build tree.
  See the "cmake-configure-log(7)" manual.

* The "cmake-file-api(7)" "codemodel" version 2 "target" object gained
  a new "fileSets" field and associated "fileSetIndex" field to
  "sources" objects.

* The "$<BUILD_LOCAL_INTERFACE:...>" generator expression was added to
  prevent usage requirements from being exported to dependent
  projects.

* Language Standard Flags, such as "-std=c++11", when generated due to
  "target_compile_features()" or "CMAKE_<LANG>_STANDARD", are now
  placed before flags added by "target_compile_options()", rather than
  after them.

* The top-level "project()" call will now emit an author warning if
  the documented command order in relation to
  "cmake_minimum_required()" is not respected.


CMake 3.26 Release Notes
************************

Changes made since CMake 3.25 include the following.


New Features
============


Languages
---------

* The "ASM_MARMASM" language was added to support the Microsoft ARM
  assembler language.


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

* The "cmake -E copy" command-line tool now supports a "-t" argument.

* The "cmake -E copy_directory_if_different" command-line tool was
  added.


Configure Log
-------------

* CMake now writes a YAML log of configure-time checks to
  "CMakeFiles/CMakeConfigureLog.yaml" under the top of the build tree.
  See the "cmake-configure-log(7)" manual.


File-Based API
--------------

* The "cmake-file-api(7)" "codemodel" version 2 "version" field has
  been updated to 2.5.

* The "cmake-file-api(7)" "codemodel" version 2 "target" object gained
  a new "fileSets" field and associated "fileSetIndex" field to
  "sources" objects.

* The "cmake-file-api(7)" gained a new "configureLog" object kind that
  enables stable access to the "cmake-configure-log(7)".


Commands
--------

* The "add_custom_command()" and "add_custom_target()" commands now
  support "generator expressions" in their "COMMENT" option.

* The "message()" command gained a "CONFIGURE_LOG" mode to record an
  entry in the "cmake-configure-log(7)".

* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands now support
  the "%z" and "%Z" specifiers for the time zone.

* The "try_compile()" and "try_run()" commands gained a
  "LOG_DESCRIPTION" option specifying text to be recorded in the
  "cmake-configure-log(7)".

* The "try_compile()" and "try_run()" commands gained a "NO_LOG"
  option to skip recording a "cmake-configure-log(7)" entry.


Variables
---------

* The "CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT" variable is now set for
  "GNU", "MSVC", and "AppleClang" compilers that have only one
  frontend variant.

* A "CMAKE_VS_VERSION_BUILD_NUMBER" variable is now set by Visual
  Studio Generators for VS 2017 and above to report the four-component
  Visual Studio version number.


Properties
----------

* The "<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR" target property was added
  to allow the "clang-tidy" tool to export its suggested fixes to a
  set of ".yaml" files. A new
  "CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR" variable was created to
  initialize this property.

* The "XCODE_EMBED_EXTENSIONKIT_EXTENSIONS" target property was added
  to tell the "Xcode" generator to embed ExtensionKit-based extensions
  such as extensions using the Background Assets framework.  Aspects
  of the embedding can be customized with:

  * "XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_PATH"

  * "XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_CODE_SIGN_ON_COPY"

  * "XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_REMOVE_HEADERS_ON_COPY"


Modules
-------

* The "ExternalProject" module's "ExternalProject_Add()" command
  gained an "INSTALL_BYPRODUCTS" option to specify files generated by
  the "install" step.

* The "FindCUDAToolkit" module:

  * gained support for the "sbsa-linux" cross compilation target, and

  * now provides an imported target for "nvrtc_static", if found.

* The "FindImageMagick" module now provides imported targets.

* The "FindPython3" and "FindPython" modules gained support for the
  Stable Application Binary Interface.

* The "UseSWIG" module gained support for the "perl5" language.


Generator Expressions
---------------------

* The "$<BUILD_LOCAL_INTERFACE:...>" generator expression was added to
  prevent usage requirements from being exported to dependent
  projects.


CTest
-----

* The "CTEST_NO_TESTS_ACTION" environment variable was added to
  provide a default value for the "--no-tests=<action>" command line
  argument of "ctest(1)".


Deprecated and Removed Features
===============================

* The "CMakeFiles/CMakeOutput.log" and "CMakeFiles/CMakeError.log"
  files are no longer populated by CMake's built-in modules.
  "cmake(1)" no longer suggests looking at them after a "CMake Error"
  occurs.  Information previously logged to those files is instead
  logged to the "cmake-configure-log(7)".

* On CYGWIN, the undocumented "CMAKE_LEGACY_CYGWIN_WIN32" mode for
  compatibility with CMake versions older than 2.8.4 has been removed.


Other Changes
=============

* Language Standard Flags, such as "-std=c++11", when generated due to
  "target_compile_features()" or "CMAKE_<LANG>_STANDARD", are now
  placed before flags added by "target_compile_options()", rather than
  after them.

* For all "COMPILE_DEFINITIONS" properties, any leading "-D" on an
  item is removed whether or not it was specified by a generator
  expression.

* The "compile_commands.json" database enabled by
  "CMAKE_EXPORT_COMPILE_COMMANDS" now provides the "output" field in
  the compile commands objects.  This allows multi-config generators,
  such as the "Ninja Multi-Config" generator, to provide the compile
  commands for all configurations.

* The "USE_FOLDERS" global property is treated as "ON" by default. See
  policy "CMP0143".

* The top-level "project()" call will now emit an author warning if
  the documented command order in relation to
  "cmake_minimum_required()" is not respected.

* The "cmake --trace" option now follows "try_compile()" and
  "try_run()" invocations.

----------------------------------------------------------------------------
Changes made since CMake 3.26.0-rc5:

Brad King (6):
  ExternalProject: Restore driving install through build system
  GoogleTest: Restore suite name for type-parametrized tests
  Clang: Record Clang 16.0 flags for our experimental C++ modules support
  file(INSTALL): Fix file ownership regression when running as root on macOS
  VS: Revert "Build custom commands concurrently when possible"
  CMake 3.26.0-rc6

scivision (1):
  Help:cmake-language: note new block() command scope
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-devel/attachments/20230308/cfb0dabe/attachment-0001.htm>


More information about the kde-devel mailing list