diff options
Diffstat (limited to 'Help/release')
30 files changed, 592 insertions, 77 deletions
diff --git a/Help/release/3.0.rst b/Help/release/3.0.rst index 64491e3..e37c130 100644 --- a/Help/release/3.0.rst +++ b/Help/release/3.0.rst @@ -11,7 +11,7 @@ Documentation Changes ===================== * The CMake documentation has been converted to reStructuredText and - now transforms via Sphinx (`<http://sphinx-doc.org>`__) into man and + now transforms via Sphinx (`<https://www.sphinx-doc.org>`__) into man and html pages. This allows the documentation to be properly indexed and to contain cross-references. diff --git a/Help/release/3.11.rst b/Help/release/3.11.rst index a80657d..957dd4f 100644 --- a/Help/release/3.11.rst +++ b/Help/release/3.11.rst @@ -174,7 +174,7 @@ Modules to removal of the ``javah`` tool by `JEP 313`_. .. _`FLAME`: https://github.com/flame -.. _`JEP 313`: http://openjdk.java.net/jeps/313 +.. _`JEP 313`: https://openjdk.java.net/jeps/313 Autogen ------- diff --git a/Help/release/3.12.rst b/Help/release/3.12.rst index 481027e..dcdae1d 100644 --- a/Help/release/3.12.rst +++ b/Help/release/3.12.rst @@ -242,7 +242,7 @@ CPack * A :cpack_gen:`CPack NuGet Generator` was was added with basic support for `NuGet`_. -.. _NuGet: https://docs.microsoft.com/en-us/nuget/what-is-nuget +.. _NuGet: https://learn.microsoft.com/en-us/nuget/what-is-nuget Other ----- @@ -302,4 +302,4 @@ Other Changes (and legacy ``swig_add_module`` command) now set the prefix of Java modules to ``""`` for MINGW, MSYS, and CYGWIN environments. -.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules +.. _Fortran Submodules: https://fortranwiki.org/fortran/show/Submodules diff --git a/Help/release/3.15.rst b/Help/release/3.15.rst index 6b1a800..de3ced0 100644 --- a/Help/release/3.15.rst +++ b/Help/release/3.15.rst @@ -243,46 +243,42 @@ Modules Generator Expressions --------------------- -* The :manual:`generator expressions <cmake-generator-expressions(7)>` - ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``, - ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and - ``PLATFORM_ID`` learned to support matching one value from a comma-separated - list. +* The generator expressions :genex:`$<C_COMPILER_ID>`, + :genex:`$<CXX_COMPILER_ID>`, :genex:`$<CUDA_COMPILER_ID>`, + :genex:`$<Fortran_COMPILER_ID>`, :genex:`$<COMPILE_LANGUAGE>`, + :genex:`$<COMPILE_LANG_AND_ID>`, and :genex:`$<PLATFORM_ID>` learned to + support matching one value from a comma-separated list. -* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` were added. +* The :genex:`$<CUDA_COMPILER_ID:...>` and :genex:`$<CUDA_COMPILER_VERSION:...>` + generator expressions were added. -* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to +* The :genex:`$<COMPILE_LANG_AND_ID:...>` generator expression was introduced to allow specification of compile options for target files based on the :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of each source file. -* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>`` - :manual:`generator expression <cmake-generator-expressions(7)>` - has been added. +* A :genex:`$<FILTER:list,INCLUDE|EXCLUDE,regex>` generator expression has + been added. -* A ``$<REMOVE_DUPLICATES:list>`` - :manual:`generator expression <cmake-generator-expressions(7)>` - has been added. +* A :genex:`$<REMOVE_DUPLICATES:list>` generator expression has been added. -* The ``$<SHELL_PATH:...>`` :manual:`generator expression - <cmake-generator-expressions(7)>` gained support for a list of paths. +* The :genex:`$<SHELL_PATH:...>` generator expression gained support for a + list of paths. * New ``$<TARGET_FILE*>`` :manual:`generator expressions <cmake-generator-expressions(7)>` were added to retrieve the prefix, base name, and suffix of the file names of various artifacts: - * ``$<TARGET_FILE_PREFIX:...>`` - * ``$<TARGET_FILE_BASE_NAME:...>`` - * ``$<TARGET_FILE_SUFFIX:...>`` - * ``$<TARGET_LINKER_FILE_PREFIX:...>`` - * ``$<TARGET_LINKER_FILE_BASE_NAME:...>`` - * ``$<TARGET_LINKER_FILE_SUFFIX:...>`` - * ``$<TARGET_PDB_FILE_BASE_NAME:...>`` - -* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression - <cmake-generator-expressions(7)>` is now supported on ``SHARED``, - ``STATIC``, ``MODULE`` libraries and executables. + * :genex:`$<TARGET_FILE_PREFIX:...>` + * :genex:`$<TARGET_FILE_BASE_NAME:...>` + * :genex:`$<TARGET_FILE_SUFFIX:...>` + * :genex:`$<TARGET_LINKER_FILE_PREFIX:...>` + * :genex:`$<TARGET_LINKER_FILE_BASE_NAME:...>` + * :genex:`$<TARGET_LINKER_FILE_SUFFIX:...>` + * :genex:`$<TARGET_PDB_FILE_BASE_NAME:...>` + +* The :genex:`$<TARGET_OBJECTS:...>` generator expression is now supported + on ``SHARED``, ``STATIC``, ``MODULE`` libraries and executables. CTest ----- diff --git a/Help/release/3.17.rst b/Help/release/3.17.rst index 1aa475f..a27d638 100644 --- a/Help/release/3.17.rst +++ b/Help/release/3.17.rst @@ -140,7 +140,7 @@ Properties * The :prop_tgt:`INSTALL_NAME_DIR` target property now supports :manual:`generator expressions <cmake-generator-expressions(7)>`. - In particular, the ``$<INSTALL_PREFIX>`` generator expression can + In particular, the :genex:`$<INSTALL_PREFIX>` generator expression can be used to set the directory relative to the install-time prefix. * Target properties :prop_tgt:`MACHO_COMPATIBILITY_VERSION` and diff --git a/Help/release/3.18.rst b/Help/release/3.18.rst index f97e4df..c120b9f 100644 --- a/Help/release/3.18.rst +++ b/Help/release/3.18.rst @@ -211,12 +211,11 @@ Modules Generator Expressions --------------------- -* The ``$<DEVICE_LINK:...>`` and ``$<HOST_LINK:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` were added - to manage device and host link steps. +* The :genex:`$<DEVICE_LINK:...>` and :genex:`$<HOST_LINK:...>` + generator expressions were added to manage device and host link steps. -* The ``$<LINK_LANGUAGE:...>`` and ``$<LINK_LANG_AND_ID:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` were added. +* The :genex:`$<LINK_LANGUAGE:...>` and :genex:`$<LINK_LANG_AND_ID:...>` + generator expressions were added. CTest ----- diff --git a/Help/release/3.20.rst b/Help/release/3.20.rst index 42e95be..ebd0f91 100644 --- a/Help/release/3.20.rst +++ b/Help/release/3.20.rst @@ -86,8 +86,8 @@ Commands in their ``OUTPUT`` and ``BYPRODUCTS`` options. Their ``COMMAND``, ``WORKING_DIRECTORY``, and ``DEPENDS`` options gained - support for new generator expressions ``$<COMMAND_CONFIG:...>`` and - ``$<OUTPUT_CONFIG:...>`` that control cross-config handling when using + support for new generator expressions :genex:`$<COMMAND_CONFIG:...>` and + :genex:`$<OUTPUT_CONFIG:...>` that control cross-config handling when using the :generator:`Ninja Multi-Config` generator. * The :command:`add_custom_command` command gained ``DEPFILE`` support on @@ -217,8 +217,8 @@ Autogen CTest ----- -* :manual:`ctest(1)` gained a ``--test-dir`` option to specify the directory - in which to look for tests. +* :manual:`ctest(1)` gained a :option:`--test-dir <ctest --test-dir>` + option to specify the directory in which to look for tests. CPack ----- @@ -263,7 +263,7 @@ CPack :variable:`CPACK_NUGET_<compName>_PACKAGE_LANGUAGE` allow the locale for a package to be specified, for example ``en_CA``. -.. _Software Package Data Exchange: https://spdx.org/ +.. _Software Package Data Exchange: https://spdx.dev/ Deprecated and Removed Features =============================== diff --git a/Help/release/3.21.rst b/Help/release/3.21.rst index 462d2be..91c3768 100644 --- a/Help/release/3.21.rst +++ b/Help/release/3.21.rst @@ -49,15 +49,15 @@ Languages Command-Line ------------ -* :manual:`cmake(1)` gained the ``--install-prefix <dir>`` +* :manual:`cmake(1)` gained the :option:`--install-prefix <cmake --install-prefix>` command-line option to specify the location of the install prefix. -* :manual:`cmake(1)` gained the ``--toolchain <path/to/file>`` +* :manual:`cmake(1)` gained the :option:`--toolchain <cmake --toolchain>` command-line option to specify a toolchain file. -* :manual:`cmake(1)` ``-E capabilities`` output, for some generators, - may now contain a ``supportedPlatforms`` field listing platforms - known to be supported in :variable:`CMAKE_GENERATOR_PLATFORM`. +* :manual:`cmake(1)` :option:`-E capabilities <cmake-E capabilities>` output, + for some generators, may now contain a ``supportedPlatforms`` field listing + platforms known to be supported in :variable:`CMAKE_GENERATOR_PLATFORM`. * Messages printed to a terminal now may be colored by message type. @@ -208,8 +208,8 @@ CTest :prop_test:`ATTACHED_FILES_ON_FAIL` test properties. See :ref:`Additional Test Measurements` for more information. -* :manual:`ctest(1)` gained a ``--output-junit`` option to write test results - to a JUnit XML file. +* :manual:`ctest(1)` gained a :option:`--output-junit <ctest --output-junit>` + option to write test results to a JUnit XML file. * The :command:`ctest_build` command gained a ``PARALLEL_LEVEL`` option. diff --git a/Help/release/3.23.rst b/Help/release/3.23.rst index 47b1869..5d85777 100644 --- a/Help/release/3.23.rst +++ b/Help/release/3.23.rst @@ -43,19 +43,22 @@ Generators Command-Line ------------ -* The :manual:`cmake(1)` ``--build`` command, when used with +* The :manual:`cmake(1)` :option:`--build <cmake --build>` command, when used with :ref:`Visual Studio Generators` on projects that set the :prop_tgt:`VS_PACKAGE_REFERENCES` target property, now automatically restores package references from NuGet. The cache variable :variable:`CMAKE_VS_NUGET_PACKAGE_RESTORE` may be set to toggle this behavior - in a build tree. Use the ``--resolve-package-references=<on|off|only>`` + in a build tree. Use the + :option:`--resolve-package-references <cmake--build --resolve-package-references>` command-line option to control the behavior on one invocation. -* The :manual:`cmake(1)` command line tool gained a ``--debug-find-pkg=`` +* The :manual:`cmake(1)` command line tool gained a + :option:`--debug-find-pkg <cmake --debug-find-pkg>` option to enable debug messages under specific :command:`find_package` calls. -* The :manual:`cmake(1)` command line tool gained a ``--debug-find-var=`` +* The :manual:`cmake(1)` command line tool gained a + :option:`--debug-find-var <cmake --debug-find-var>` option to enable debug messages for ``find_*`` calls that use specific result variables. @@ -271,8 +274,8 @@ Other Changes * tries to detect invalid architectures and issue an error. * ``CUDA`` with Clang now implements policy :policy:`CMP0105` and - the ``$<DEVICE_LINK:...>`` and ``$<HOST_LINK:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>`. + the :genex:`$<DEVICE_LINK:...>` and :genex:`$<HOST_LINK:...>` + generator expressions. * The :command:`define_property` command's ``BRIEF_DOCS`` and ``FULL_DOCS`` arguments are now optional. diff --git a/Help/release/3.24.rst b/Help/release/3.24.rst index e81dadc..e7ddf2a 100644 --- a/Help/release/3.24.rst +++ b/Help/release/3.24.rst @@ -34,25 +34,28 @@ Generators Command-Line ------------ -* :manual:`cmake(1)` gained the ``--fresh`` command-line option to remove - any existing ``CMakeCache.txt`` file and associated ``CMakeFiles/`` +* :manual:`cmake(1)` gained the :option:`--fresh <cmake --fresh>` command-line + option to remove any existing ``CMakeCache.txt`` file and associated ``CMakeFiles/`` directory, when configuring a build tree, thus starting a new configuration as if the build tree were freshly created. -* :manual:`cmake(1)` gained the ``--compile-no-warning-as-error`` command-line - option which causes the effects of the :prop_tgt:`COMPILE_WARNING_AS_ERROR` - target property and :variable:`CMAKE_COMPILE_WARNING_AS_ERROR` variable - to be ignored. +* :manual:`cmake(1)` gained the + :option:`--compile-no-warning-as-error <cmake --compile-no-warning-as-error>` + command-line option which causes the effects of the + :prop_tgt:`COMPILE_WARNING_AS_ERROR` target property and + :variable:`CMAKE_COMPILE_WARNING_AS_ERROR` variable to be ignored. -* The :manual:`cmake(1)` ``--trace=json-v1`` trace format gained fields - ``global_frame`` and ``line_end``. +* The :manual:`cmake(1)` :option:`--trace=json-v1 <cmake --trace>` trace + format gained fields ``global_frame`` and ``line_end``. -* The :manual:`cmake(1)` ``-E`` commands ``cat`` and ``env`` learned to respect - a double dash (``--``) argument that acts as a delimiter indicating the end of - options. Any following arguments are treated as operands/positional arguments, - even if they begin with a dash ``-`` character. +* The :manual:`cmake(1)` :option:`-E <cmake -E>` commands :option:`cat <cmake-E cat>` + and :option:`env <cmake-E env>` learned to respect a double dash + (:option:`-- <cmake-E_env -->`) argument that acts as a delimiter indicating + the end of options. Any following arguments are treated as operands/positional + arguments, even if they begin with a dash ``-`` character. -* The :manual:`cmake(1)` ``-E tar`` command gained the ``--touch`` option +* The :manual:`cmake(1)` :option:`-E tar <cmake-E tar>` command gained the + :option:`--touch <cmake-E_tar --touch>` option to keep the current local timestamp instead of extracting file timestamps from the archive. @@ -289,9 +292,10 @@ Generator Expressions CTest ----- -* :manual:`ctest(1)` gained a ``--test-output-truncation`` option (and - corresponding :variable:`CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION` variable) to - specify the truncation mode once the maximum test output size has been +* :manual:`ctest(1)` gained a + :option:`--test-output-truncation <ctest --test-output-truncation>` option + (and corresponding :variable:`CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION` variable) + to specify the truncation mode once the maximum test output size has been reached. Possible values are ``tail`` (default), ``middle`` or ``head``. CPack diff --git a/Help/release/3.25.rst b/Help/release/3.25.rst new file mode 100644 index 0000000..2d04741 --- /dev/null +++ b/Help/release/3.25.rst @@ -0,0 +1,259 @@ +CMake 3.25 Release Notes +************************ + +.. only:: html + + .. contents:: + +Changes made since CMake 3.24 include the following. + +New Features +============ + +Presets +------- + +* The :manual:`cmake-presets(7)` schema version has been bumped to ``6``. + +* The :manual:`cmake-presets(7)` format now supports a + ``packagePresets`` field to specify presets for :option:`cpack --preset`. + +* The :manual:`cmake-presets(7)` format now supports a + ``workflowPresets`` field to specify presets for :option:`cmake --workflow`. + +* The :manual:`cmake-presets(7)` format now supports an + ``outputJUnitFile`` field to specify JUnit output in test presets. + +Languages +--------- + +* The :manual:`Compile Features <cmake-compile-features(7)>` functionality + is now aware of C++26, and defines a ``cxx_std_26`` meta-feature. + C++26 compiler modes may also be specified via the :prop_tgt:`CXX_STANDARD`, + :prop_tgt:`CUDA_STANDARD`, :prop_tgt:`HIP_STANDARD`, + or :prop_tgt:`OBJCXX_STANDARD` target properties. + +* ``CUDA`` language support now includes device link-time optimization when + using ``nvcc``. The :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable + and the associated :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property + will activate device LTO. + +Command-Line +------------ + +* A :option:`cmake --workflow --preset <cmake--workflow --preset>` mode was + added to drive sequences of configure, build, test, and package operations + through a single command. + +* The :option:`cmake -E capabilities <cmake-E capabilities>` command + gained a new ``tls`` field that tells whether or not TLS is enabled. + +* The :option:`cmake -E env <cmake-E env>` command-line tool gained + a ``--modify`` flag to support :prop_test:`ENVIRONMENT_MODIFICATION` + operations. + +* The :option:`cmake --debug-trycompile` option now prints log messages + reporting the directory in which each try-compile check is done. + +Compilers +--------- + +* Support for the `Tasking compiler toolsets`_ (SmartCode, TriCore, + Standalone: ARM, MCS, 8051) was added with compiler id ``Tasking``. + See the :variable:`CMAKE_TASKING_TOOLSET` variable. + +.. _Tasking compiler toolsets: https://www.tasking.com + +Commands +-------- + +* The :command:`add_subdirectory` command gained a ``SYSTEM`` option + to enable the :prop_dir:`SYSTEM` directory property in the subdirectory. + +* The :command:`block` and :command:`endblock` commands were added to manage + specific scopes (policy or variable) for a contained block of commands. + +* The :command:`cmake_language` command gained a new + ``GET_MESSAGE_LOG_LEVEL`` sub-command. It can be used to + query the current message logging level. + +* The :command:`find_file`, :command:`find_path`, :command:`find_library`, and + :command:`find_program` commands gained a ``VALIDATOR`` option to specify a + function to be called for each candidate item to validate it. + +* The :command:`find_package` command now considers paths of + the form ``<prefix>/<name>*/(cmake|CMake)/<name>*/`` when + searching for package configuration files. + +* The :command:`return` command gained a ``PROPAGATE`` option to propagate + variables to the scope to which control returns. + See policy :policy:`CMP0140`. + +* The :command:`try_compile` and :command:`try_run` commands gained new + signatures that more consistently use keyword dispatch and do not require a + binary directory to be specified. Additionally, these signatures use a + unique directory for each invocation, which allows multiple outputs to be + preserved when using :option:`cmake --debug-trycompile`. + +* The :command:`try_compile` and :command:`try_run` commands gained the + option ``NO_CACHE`` to store results in normal variables. + +* The :command:`try_run` command gained ``RUN_OUTPUT_STDOUT_VARIABLE`` + and ``RUN_OUTPUT_STDERR_VARIABLE`` options to capture stdout and stderr + separately from the output of the compiled program. + +Variables +--------- + +* The :variable:`BSD` and :variable:`CMAKE_HOST_BSD` variables are now set + to a string value when the target or host system is BSD, respectively. + +* The :variable:`LINUX` and :variable:`CMAKE_HOST_LINUX` variables are + now set to true when the target or host system is Linux, respectively. + +* The :variable:`CMAKE_MSVC_DEBUG_INFORMATION_FORMAT` variable and + :prop_tgt:`MSVC_DEBUG_INFORMATION_FORMAT` target property were introduced + to select the debug information format for compilers targeting the MSVC ABI. + See policy :policy:`CMP0141`. + +* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` variable and + corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_API_VALIDATION` target + property were added to tell the :generator:`Xcode` generator what to put + in the scheme's ``Metal: API Validation`` setting. + +* The :variable:`CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` variable and + corresponding :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION` target + property were added to tell the :generator:`Xcode` generator what to put + in the scheme's ``Metal: Shader Validation`` setting. + +* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_MODE` variable and corresponding + :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE` target property were added to tell + the :generator:`Xcode` generator what to put in the scheme's "Launch" + mode setting. + +* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION` variable and + corresponding :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION` target + property were added to tell the :generator:`Xcode` generator what + configuration to put in the scheme's Launch action. + +Properties +---------- + +* The :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property now supports + :manual:`generator expressions <cmake-generator-expressions(7)>`. + +* The :prop_tgt:`EXPORT_NO_SYSTEM` target property was added to + specify that :command:`install(EXPORT)` and :command:`export` + commands will generate na imported target with + :prop_tgt:`SYSTEM` property ``OFF``. + +* The :prop_tgt:`SYSTEM` target property was added to specify + whether a target should be treated as a system library (i.e. + its include directories are automatically ``SYSTEM`` when + compiling consumers). If not set, the default is the previous + behavior: on for imported targets and off for other targets. + +* The :prop_dir:`SYSTEM` directory property was added to initialize the + :prop_tgt:`SYSTEM` target property for targets created in that directory. + +Modules +------- + +* The :module:`FetchContent` module's :command:`FetchContent_Declare` + command gained a ``SYSTEM`` option which sets the :prop_dir:`SYSTEM` + directory property on subdirectories created by + :command:`FetchContent_MakeAvailable`. + +* The :module:`FindCUDAToolkit` module now provides a target for + :ref:`nvtx3 <cuda_toolkit_nvtx3>` for CUDA 10.0+, which supersedes + :ref:`nvToolsExt <cuda_toolkit_nvToolsExt>`. A deprecation warning + is emitted when using ``nvToolsExt`` if the project requires CMake + 3.25 and CUDA 10.0+ is used. + +* The :module:`FindDoxygen` module's version handling has been improved: + + * Multiple candidate installations will now be considered, if needed, + to satisfy version constraints. Previously, only the first one + encountered would be considered. + + * Version ranges are supported. + + * Variations in the version format reported by Doxygen are now + tolerated (e.g. a trailing git commit hash). + +* The :module:`FindOpenAL` module now provides an imported target. + +* The :module:`FindOpenSP` module was added to find the OpenSP library. + +* The :module:`FindVulkan` module gained support for new components: + + ``dxc`` + DirectX Shader Compiler. + + ``volk`` + Volk open-source vulkan meta-loader. + +CPack +----- + +* The :cpack_gen:`CPack Archive Generator` gained a new + :variable:`CPACK_ARCHIVE_FILE_EXTENSION` variable to control + the package file name extension. + +* The :cpack_gen:`CPack NSIS Generator` gained two new variables + :variable:`CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS` and + :variable:`CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS` + to provide arguments to the nsis executable invocation. + +* The :module:`CPack` module gained the :variable:`CPACK_READELF_EXECUTABLE`, + :variable:`CPACK_OBJCOPY_EXECUTABLE`, and + :variable:`CPACK_OBJDUMP_EXECUTABLE` variables to control the locations + of binutils used by :manual:`cpack(1)`. + +Deprecated and Removed Features +=============================== + +* The :prop_tgt:`IMPORTED_NO_SYSTEM` target property has been deprecated + in favor of :prop_tgt:`SYSTEM` and :prop_tgt:`EXPORT_NO_SYSTEM`. + +* The :generator:`Visual Studio 10 2010` generator has been removed. + +* The :generator:`Visual Studio 11 2012` generator is now deprecated + and will be removed in a future version of CMake. + +Other Changes +============= + +* The :envvar:`SSL_CERT_FILE` and :envvar:`SSL_CERT_DIR` environment + variables can now be used to override where to find certificate + authorities for TLS/SSL operations. + +* If :prop_tgt:`<LANG>_CLANG_TIDY` includes a ``-p`` argument, the + full compiler command line is no longer appended after ``--``. + +* The :generator:`Xcode` generator no longer adds the per-config suffix + ``$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)`` to library search paths. + See policy :policy:`CMP0142`. + +Updates +======= + +Changes made since CMake 3.25.0 include the following. + +3.25.1 +------ + +* On Windows, when targeting the MSVC ABI, the :command:`find_library` + command no longer accepts ``.a`` file names. This behavior was added + in CMake 3.25.0, but has been reverted due finding GNU-ABI libraries + in cases we did not previously. + +3.25.2 +------ + +* CUDA language level 20 (corresponding to C++20) is now supported with + NVCC 12.0 and above. + +* On Windows, the ``icpx`` compiler now provided by Intel oneAPI 2023.0 + and above is no longer selected because its GNU-like command-line is + not yet supported by CMake. diff --git a/Help/release/3.26.rst b/Help/release/3.26.rst new file mode 100644 index 0000000..ee98a98 --- /dev/null +++ b/Help/release/3.26.rst @@ -0,0 +1,171 @@ +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 embed + 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's :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 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 built-in modules. + :manual:`cmake(1)` no longer suggests looking at them after a + ``CMake Error`` occurs. Information previously logged to those + files is instead logged to 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. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 44f4e19..2dc237f 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -26,7 +26,7 @@ Generators added on Windows. `Green Hills MULTI`_ is an IDE for embedded real-time systems. -.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html +.. _`Green Hills MULTI`: https://www.ghs.com/products/MULTI_IDE.html Commands -------- diff --git a/Help/release/3.4.rst b/Help/release/3.4.rst index 943d267..abfede6 100644 --- a/Help/release/3.4.rst +++ b/Help/release/3.4.rst @@ -227,7 +227,7 @@ Other will be merged with linker-generated manifests and embedded in the binary. -* The `Concurrent Fortran 77 <https://ccur.com>`__ compiler is now supported. +* The Concurrent Fortran 77 compiler is now supported. Its :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` is ``CCur``. * :manual:`cmake(1)` gained a new ``--trace-expand`` command line option diff --git a/Help/release/3.7.rst b/Help/release/3.7.rst index 345c056..9656a54 100644 --- a/Help/release/3.7.rst +++ b/Help/release/3.7.rst @@ -315,5 +315,5 @@ Other Changes * Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim`` from the `vim-cmake-syntax`_ project are now distributed with CMake. -.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules +.. _`Fortran Submodules`: https://fortranwiki.org/fortran/show/Submodules .. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax diff --git a/Help/release/3.9.rst b/Help/release/3.9.rst index 89da627..09e4ea6 100644 --- a/Help/release/3.9.rst +++ b/Help/release/3.9.rst @@ -256,11 +256,11 @@ Other :command:`file(GENERATE)` commands. * Two new informational generator expressions to retrieve Apple Bundle - directories have been added. The first one ``$<TARGET_BUNDLE_DIR:tgt>`` + directories have been added. The first one :genex:`$<TARGET_BUNDLE_DIR:tgt>` outputs the full path to the Bundle directory, the other one - ``$<TARGET_BUNDLE_CONTENT_DIR:tgt>`` outputs the full path to the + :genex:`$<TARGET_BUNDLE_CONTENT_DIR:tgt>` outputs the full path to the ``Contents`` directory of macOS Bundles and App Bundles. For all other - bundle types and SDKs it is identical with ``$<TARGET_BUNDLE_DIR:tgt>``. + bundle types and SDKs it is identical with :genex:`$<TARGET_BUNDLE_DIR:tgt>`. The new expressions are helpful to query Bundle locations independent of the different Bundle types and layouts on macOS and iOS. diff --git a/Help/release/dev/0-sample-topic.rst b/Help/release/dev/0-sample-topic.rst new file mode 100644 index 0000000..e4cc01e --- /dev/null +++ b/Help/release/dev/0-sample-topic.rst @@ -0,0 +1,7 @@ +0-sample-topic +-------------- + +* This is a sample release note for the change in a topic. + Developers should add similar notes for each topic branch + making a noteworthy change. Each document should be named + and titled to match the topic name to avoid merge conflicts. diff --git a/Help/release/dev/Apple-tbd-files-management.rst b/Help/release/dev/Apple-tbd-files-management.rst new file mode 100644 index 0000000..edcfe55 --- /dev/null +++ b/Help/release/dev/Apple-tbd-files-management.rst @@ -0,0 +1,6 @@ +Apple-tbd-files-management +-------------------------- + +* Support for text-based stubs (i.e. ``.tbd`` files) was added on macOS + platform. This capability is managed through the :prop_tgt:`ENABLE_EXPORTS` + property. diff --git a/Help/release/dev/FindCUDAToolkit-target-for-cudla.rst b/Help/release/dev/FindCUDAToolkit-target-for-cudla.rst new file mode 100644 index 0000000..9de456e --- /dev/null +++ b/Help/release/dev/FindCUDAToolkit-target-for-cudla.rst @@ -0,0 +1,4 @@ +FindCUDAToolkit-target-for-cudla +-------------------------------- + +* The :module:`FindCUDAToolkit` module now provides an imported target for ``cudla``, if found. diff --git a/Help/release/dev/PATH-genex-support-list.rst b/Help/release/dev/PATH-genex-support-list.rst new file mode 100644 index 0000000..ce87fdd --- /dev/null +++ b/Help/release/dev/PATH-genex-support-list.rst @@ -0,0 +1,5 @@ +PATH-genex-supports-list +------------------------ + +* The :genex:`$<PATH>` generator expression learned to process list of paths + for decomposition and transformation operations. diff --git a/Help/release/dev/deprecate-extra-generators.rst b/Help/release/dev/deprecate-extra-generators.rst new file mode 100644 index 0000000..ceb2f4e --- /dev/null +++ b/Help/release/dev/deprecate-extra-generators.rst @@ -0,0 +1,5 @@ +deprecate-extra-generators +-------------------------- + +* The :ref:`Extra Generators` have been deprecated. IDEs may use the + :manual:`cmake-file-api(7)` to view CMake-generated project build trees. diff --git a/Help/release/dev/deprecate-policy-old.rst b/Help/release/dev/deprecate-policy-old.rst new file mode 100644 index 0000000..9c38866 --- /dev/null +++ b/Help/release/dev/deprecate-policy-old.rst @@ -0,0 +1,7 @@ +deprecate-policy-old +-------------------- + +* Compatibility with versions of CMake older than 3.5 is now deprecated + and will be removed from a future version. Calls to + :command:`cmake_minimum_required` or :command:`cmake_policy` that set + the policy version to an older value now issue a deprecation diagnostic. diff --git a/Help/release/dev/dll-name-soversion.rst b/Help/release/dev/dll-name-soversion.rst new file mode 100644 index 0000000..56d0842 --- /dev/null +++ b/Help/release/dev/dll-name-soversion.rst @@ -0,0 +1,7 @@ +dll-name-soversion +------------------ + +* The :variable:`CMAKE_DLL_NAME_WITH_SOVERSION` variable and associated + :prop_tgt:`DLL_NAME_WITH_SOVERSION` target property were added to + optionally append the :prop_tgt:`SOVERSION` to the filename of the + ``.dll`` part of a shared library on Windows. diff --git a/Help/release/dev/find_package-PACKAGENAME_ROOT.rst b/Help/release/dev/find_package-PACKAGENAME_ROOT.rst new file mode 100644 index 0000000..0388271 --- /dev/null +++ b/Help/release/dev/find_package-PACKAGENAME_ROOT.rst @@ -0,0 +1,7 @@ +find_package-PACKAGENAME_ROOT +----------------------------- + +* The :command:`find_package` command now searches prefixes specified by + upper-case :variable:`<PACKAGENAME>_ROOT` CMake variables and upper-case + :envvar:`<PACKAGENAME>_ROOT` environment variables. + See policy :policy:`CMP0144`. diff --git a/Help/release/dev/install-prefix-genex-install-code-script.rst b/Help/release/dev/install-prefix-genex-install-code-script.rst new file mode 100644 index 0000000..810f448 --- /dev/null +++ b/Help/release/dev/install-prefix-genex-install-code-script.rst @@ -0,0 +1,5 @@ +install-prefix-genex-install-code-script +---------------------------------------- + +* The :command:`install(CODE)` and :command:`install(SCRIPT)` commands + now support the :genex:`$<INSTALL_PREFIX>` generator expression. diff --git a/Help/release/dev/lang-linker-launcher-genex.rst b/Help/release/dev/lang-linker-launcher-genex.rst new file mode 100644 index 0000000..b6494eb --- /dev/null +++ b/Help/release/dev/lang-linker-launcher-genex.rst @@ -0,0 +1,5 @@ +lang-linker-launcher-genex +-------------------------- + +* The :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property now supports + :manual:`generator expressions <cmake-generator-expressions(7)>`. diff --git a/Help/release/dev/ninja-custom-command-depends.rst b/Help/release/dev/ninja-custom-command-depends.rst new file mode 100644 index 0000000..0b7840c --- /dev/null +++ b/Help/release/dev/ninja-custom-command-depends.rst @@ -0,0 +1,11 @@ +ninja-custom-command-depends +---------------------------- + +* The :command:`add_custom_command` command gained a new + ``DEPENDS_EXPLICIT_ONLY`` option to tell the :ref:`Ninja Generators` + not to add any dependencies implied by the target to which it is + attached. + +* The :variable:`CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY` variable can + be set to enable ``DEPENDS_EXPLICIT_ONLY`` in all uses of + :command:`add_custom_command` command. diff --git a/Help/release/dev/remove-dart-modules.rst b/Help/release/dev/remove-dart-modules.rst new file mode 100644 index 0000000..5da2eda --- /dev/null +++ b/Help/release/dev/remove-dart-modules.rst @@ -0,0 +1,5 @@ +remove-dart-modules +------------------- + +* The :module:`Dart` and :module:`FindDart` modules have been deprecated via + policy :policy:`CMP0145`. Port projects to the :module:`CTest` module. diff --git a/Help/release/dev/vs9-deprecate.rst b/Help/release/dev/vs9-deprecate.rst new file mode 100644 index 0000000..46568f8 --- /dev/null +++ b/Help/release/dev/vs9-deprecate.rst @@ -0,0 +1,5 @@ +vs9-deprecate +------------- + +* The :generator:`Visual Studio 9 2008` generator is now deprecated + and will be removed in a future version of CMake. diff --git a/Help/release/index.rst b/Help/release/index.rst index 4dfac8a..d434a3a 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -7,12 +7,16 @@ CMake Release Notes This file should include the adjacent "dev.txt" file in development versions but not in release versions. +.. include:: dev.txt + Releases ======== .. toctree:: :maxdepth: 1 + 3.26 <3.26> + 3.25 <3.25> 3.24 <3.24> 3.23 <3.23> 3.22 <3.22> |