|
@@ -0,0 +1,172 @@
|
|
|
|
|
+CMake 3.26 Release Notes
|
|
|
|
|
+************************
|
|
|
|
|
+
|
|
|
|
|
+.. only:: html
|
|
|
|
|
+
|
|
|
|
|
+ .. contents::
|
|
|
|
|
+
|
|
|
|
|
+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 :option:`cmake -E copy <cmake-E copy>` command-line tool now
|
|
|
|
|
+ supports a ``-t`` argument.
|
|
|
|
|
+
|
|
|
|
|
+* The :option:`cmake -E copy_directory_if_different
|
|
|
|
|
+ <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 :manual:`cmake-configure-log(7)` manual.
|
|
|
|
|
+
|
|
|
|
|
+File-Based API
|
|
|
|
|
+--------------
|
|
|
|
|
+
|
|
|
|
|
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
|
|
|
|
+ been updated to 2.5.
|
|
|
|
|
+
|
|
|
|
|
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object
|
|
|
|
|
+ gained a new ``fileSets`` field and associated ``fileSetIndex``
|
|
|
|
|
+ field to ``sources`` objects.
|
|
|
|
|
+
|
|
|
|
|
+* The :manual:`cmake-file-api(7)` gained a new "configureLog" object kind
|
|
|
|
|
+ that enables stable access to the :manual:`cmake-configure-log(7)`.
|
|
|
|
|
+
|
|
|
|
|
+Commands
|
|
|
|
|
+--------
|
|
|
|
|
+
|
|
|
|
|
+* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
|
|
|
|
+ now support :manual:`generator expressions <cmake-generator-expressions(7)>`
|
|
|
|
|
+ in their ``COMMENT`` option.
|
|
|
|
|
+
|
|
|
|
|
+* The :command:`message` command gained a ``CONFIGURE_LOG`` mode to
|
|
|
|
|
+ record an entry in the :manual:`cmake-configure-log(7)`.
|
|
|
|
|
+
|
|
|
|
|
+* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)` commands
|
|
|
|
|
+ now support the ``%z`` and ``%Z`` specifiers for the time zone.
|
|
|
|
|
+
|
|
|
|
|
+* The :command:`try_compile` and :command:`try_run` commands gained
|
|
|
|
|
+ a ``LOG_DESCRIPTION`` option specifying text to be recorded in the
|
|
|
|
|
+ :manual:`cmake-configure-log(7)`.
|
|
|
|
|
+
|
|
|
|
|
+* The :command:`try_compile` and :command:`try_run` commands gained a
|
|
|
|
|
+ ``NO_LOG`` option to skip recording a :manual:`cmake-configure-log(7)`
|
|
|
|
|
+ entry.
|
|
|
|
|
+
|
|
|
|
|
+Variables
|
|
|
|
|
+---------
|
|
|
|
|
+
|
|
|
|
|
+* The :variable:`CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT` variable is now
|
|
|
|
|
+ set for ``GNU``, ``MSVC``, and ``AppleClang`` compilers that have only
|
|
|
|
|
+ one frontend variant.
|
|
|
|
|
+
|
|
|
|
|
+* A :variable:`CMAKE_VS_VERSION_BUILD_NUMBER` variable is now set by
|
|
|
|
|
+ :ref:`Visual Studio Generators` for VS 2017 and above to report the
|
|
|
|
|
+ four-component Visual Studio version number.
|
|
|
|
|
+
|
|
|
|
|
+Properties
|
|
|
|
|
+----------
|
|
|
|
|
+
|
|
|
|
|
+* The :prop_tgt:`<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
|
|
|
|
|
+ :variable:`CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR` variable was created to
|
|
|
|
|
+ initialize this property.
|
|
|
|
|
+
|
|
|
|
|
+* The :prop_tgt:`XCODE_EMBED_EXTENSIONKIT_EXTENSIONS <XCODE_EMBED_<type>>`
|
|
|
|
|
+ target property was added to tell the :generator:`Xcode` generator to
|
|
|
|
|
+ ExtensionKit-based extensions such as extensions using the Background
|
|
|
|
|
+ Assets framework. Aspects of the embedding can be customized with:
|
|
|
|
|
+
|
|
|
|
|
+ * :prop_tgt:`XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_PATH <XCODE_EMBED_<type>>`
|
|
|
|
|
+ * :prop_tgt:`XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_CODE_SIGN_ON_COPY <XCODE_EMBED_<type>_CODE_SIGN_ON_COPY>`
|
|
|
|
|
+ * :prop_tgt:`XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_REMOVE_HEADERS_ON_COPY <XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY>`
|
|
|
|
|
+
|
|
|
|
|
+Modules
|
|
|
|
|
+-------
|
|
|
|
|
+
|
|
|
|
|
+* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
|
|
|
|
+ gained an ``INSTALL_BYPRODUCTS`` option to specify files generated by the
|
|
|
|
|
+ ``install`` step.
|
|
|
|
|
+
|
|
|
|
|
+* The :module:`FindCUDAToolkit` module:
|
|
|
|
|
+
|
|
|
|
|
+ * gained support for the ``sbsa-linux`` cross compilation target, and
|
|
|
|
|
+
|
|
|
|
|
+ * now provides an imported target for ``nvrtc_static``, if found.
|
|
|
|
|
+
|
|
|
|
|
+* The :module:`FindImageMagick` module now provides imported targets.
|
|
|
|
|
+
|
|
|
|
|
+* The :module:`FindPython3` and :module:`FindPython` modules gained
|
|
|
|
|
+ support for the `Stable Application Binary Interface`_.
|
|
|
|
|
+
|
|
|
|
|
+* The :module:`UseSWIG` module gained the support for the ``perl5`` language.
|
|
|
|
|
+
|
|
|
|
|
+.. _`Stable Application Binary Interface`: https://docs.python.org/3/c-api/stable.html
|
|
|
|
|
+
|
|
|
|
|
+Generator Expressions
|
|
|
|
|
+---------------------
|
|
|
|
|
+
|
|
|
|
|
+* The :genex:`$<BUILD_LOCAL_INTERFACE:...>` generator expression was added to
|
|
|
|
|
+ prevent usage requirements from being exported to dependent projects.
|
|
|
|
|
+
|
|
|
|
|
+CTest
|
|
|
|
|
+-----
|
|
|
|
|
+
|
|
|
|
|
+* The :envvar:`CTEST_NO_TESTS_ACTION` environment variable was added to
|
|
|
|
|
+ provide a default value for the
|
|
|
|
|
+ :option:`--no-tests=\<action\> <ctest --no-tests>` command line
|
|
|
|
|
+ argument of :manual:`ctest(1)`.
|
|
|
|
|
+
|
|
|
|
|
+Deprecated and Removed Features
|
|
|
|
|
+===============================
|
|
|
|
|
+
|
|
|
|
|
+* The ``CMakeFiles/CMakeOutput.log`` and ``CMakeFiles/CMakeError.log``
|
|
|
|
|
+ files are no longer populated by CMake's builtin modules, and
|
|
|
|
|
+ :manual:`cmake(1)` no longer suggests looking at them after a
|
|
|
|
|
+ ``CMake Error`` occurs. Information previously logged to those
|
|
|
|
|
+ files is instead logged to ``CMakeFiles/CMakeConfigureLog.yaml``,
|
|
|
|
|
+ the :manual:`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
|
|
|
|
|
+=============
|
|
|
|
|
+
|
|
|
|
|
+* :ref:`Language Standard Flags`, such as ``-std=c++11``, when generated due
|
|
|
|
|
+ to :command:`target_compile_features` or :variable:`CMAKE_<LANG>_STANDARD`,
|
|
|
|
|
+ are now placed before flags added by :command:`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
|
|
|
|
|
+ :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` now provides the ``output``
|
|
|
|
|
+ field in the compile commands objects. This allows multi-config
|
|
|
|
|
+ generators, such as the :generator:`Ninja Multi-Config` generator,
|
|
|
|
|
+ to provide the compile commands for all configurations.
|
|
|
|
|
+
|
|
|
|
|
+* The :prop_gbl:`USE_FOLDERS` global property is treated as ``ON`` by default.
|
|
|
|
|
+ See policy :policy:`CMP0143`.
|
|
|
|
|
+
|
|
|
|
|
+* The top-level :command:`project` call will now emit an author warning if the
|
|
|
|
|
+ documented command order in relation to :command:`cmake_minimum_required` is
|
|
|
|
|
+ not respected.
|
|
|
|
|
+
|
|
|
|
|
+* The :option:`cmake --trace` option now follows :command:`try_compile` and
|
|
|
|
|
+ :command:`try_run` invocations.
|