|
|
@@ -0,0 +1,202 @@
|
|
|
+CMake 3.27 Release Notes
|
|
|
+************************
|
|
|
+
|
|
|
+.. only:: html
|
|
|
+
|
|
|
+ .. contents::
|
|
|
+
|
|
|
+Changes made since CMake 3.26 include the following.
|
|
|
+
|
|
|
+* 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.
|
|
|
+
|
|
|
+* The :variable:`CMAKE_AUTOMOC_EXECUTABLE`,
|
|
|
+ :variable:`CMAKE_AUTORCC_EXECUTABLE`, and
|
|
|
+ :variable:`CMAKE_AUTOUIC_EXECUTABLE` variables were added to initialize the
|
|
|
+ corresponding target properties as targets are created.
|
|
|
+
|
|
|
+* The :prop_tgt:`AUTOGEN_USE_SYSTEM_INCLUDE` target property and
|
|
|
+ corresponding :variable:`CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE` were
|
|
|
+ added to explicitly control whether autogen headers are
|
|
|
+ considered system headers.
|
|
|
+
|
|
|
+* The :prop_tgt:`INTERFACE_AUTOMOC_MACRO_NAMES` target property was added to
|
|
|
+ specify macro names for ``moc`` as a transitive usage requirement.
|
|
|
+
|
|
|
+* :manual:`cmake(1)` now supports interactive debugging of the CMake language.
|
|
|
+ See the :option:`--debugger <cmake --debugger>` option.
|
|
|
+
|
|
|
+* ``cmake --build $dir --verbose`` will now print the working directory and
|
|
|
+ command line used to perform the build.
|
|
|
+
|
|
|
+* The :cpack_gen:`CPack Inno Setup Generator` was added to package using
|
|
|
+ Inno Setup.
|
|
|
+
|
|
|
+ The new generator adds:
|
|
|
+
|
|
|
+ * A lot of options to customize the Inno Setup installer (e.g. custom
|
|
|
+ installation rules)
|
|
|
+ * Start menu and desktop shortcuts
|
|
|
+ * Components (and also downloaded components)
|
|
|
+
|
|
|
+* The :prop_test:`TIMEOUT_SIGNAL_NAME` and
|
|
|
+ :prop_test:`TIMEOUT_SIGNAL_GRACE_PERIOD` test properties were added
|
|
|
+ to specify a POSIX signal to send to a test process when its timeout
|
|
|
+ is reached.
|
|
|
+
|
|
|
+* A :prop_tgt:`CUDA_CUBIN_COMPILATION` target property was added to
|
|
|
+ :ref:`Object Libraries` to support compiling to ``.cubin`` files
|
|
|
+ instead of host object files. Currently only supported with NVIDIA.
|
|
|
+
|
|
|
+* A :prop_tgt:`CUDA_FATBIN_COMPILATION` target property was added to
|
|
|
+ :ref:`Object Libraries` to support compiling to ``.fatbin`` files
|
|
|
+ instead of host object files. Currently only supported with NVIDIA.
|
|
|
+
|
|
|
+* A :prop_tgt:`CUDA_OPTIX_COMPILATION` target property was added to
|
|
|
+ :ref:`Object Libraries` to support compiling to ``.optixir`` files
|
|
|
+ instead of host object files. Currently only supported with NVIDIA.
|
|
|
+
|
|
|
+* Source file extensions ``.ccm``, ``.cxxm``, or ``.c++m`` are now
|
|
|
+ treated as C++.
|
|
|
+
|
|
|
+* The :ref:`Extra Generators` have been deprecated. IDEs may use the
|
|
|
+ :manual:`cmake-file-api(7)` to view CMake-generated project build trees.
|
|
|
+
|
|
|
+* 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.
|
|
|
+
|
|
|
+* 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.
|
|
|
+
|
|
|
+* The ``update`` and ``patch`` steps of an :module:`ExternalProject` will now
|
|
|
+ always re-execute if any of their details change, even if
|
|
|
+ ``UPDATE_DISCONNECTED`` was set to true in the call to
|
|
|
+ :command:`ExternalProject_Add`. If using the GIT download method and the
|
|
|
+ ``GIT_TAG`` is changed and the new ``GIT_TAG`` isn't already known locally,
|
|
|
+ this is now a fatal error instead of silently using the previous ``GIT_TAG``.
|
|
|
+
|
|
|
+* When ``UPDATE_DISCONNECTED`` is set to true in a call to
|
|
|
+ :command:`ExternalProject_Add`, the ``configure`` step will no longer
|
|
|
+ re-run on every build. It will only re-run if details of the ``download``,
|
|
|
+ ``update`` or ``patch`` step change.
|
|
|
+
|
|
|
+* The :module:`ExternalProject` and :module:`FetchContent` modules
|
|
|
+ now resolve relative `GIT_REPOSITORY` paths as relative to the
|
|
|
+ parent project's remote, not as a relative local file system path.
|
|
|
+ See :policy:`CMP0150`.
|
|
|
+
|
|
|
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
|
|
+ been updated to 2.6.
|
|
|
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
|
|
|
+ a new "frameworks" field in the "compileGroups" objects.
|
|
|
+
|
|
|
+* The :command:`cmake_file_api` command was added, enabling projects to
|
|
|
+ add :manual:`CMake file API <cmake-file-api(7)>` queries for the current
|
|
|
+ CMake run.
|
|
|
+
|
|
|
+
|
|
|
+* The :command:`file(GET_RUNTIME_DEPENDENCIES)` command now case-preserves
|
|
|
+ DLL names reported on Windows. They are still converted to lowercase
|
|
|
+ for filter matching.
|
|
|
+
|
|
|
+* The :module:`FindCUDA` module has been fully deprecated via policy
|
|
|
+ :policy:`CMP0146`. Port projects to CMake's first-class ``CUDA``
|
|
|
+ language support.
|
|
|
+
|
|
|
+* The :module:`FindCUDAToolkit` module now provides an imported target for ``cudla``, if found.
|
|
|
+
|
|
|
+* The :module:`FindDoxygen` module's ``doxygen_add_docs`` command gained
|
|
|
+ a ``CONFIG_FILE`` option to specify a custom doxygen configuration file.
|
|
|
+
|
|
|
+* The :module:`FindOpenGL` module gained support for components
|
|
|
+ ``GLES2`` and ``GLES3``.
|
|
|
+
|
|
|
+* 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`.
|
|
|
+
|
|
|
+* :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3` modules
|
|
|
+ learn to manage ``Windows/ARM`` platform.
|
|
|
+
|
|
|
+* The :module:`FindwxWidgets` module now provides an imported target.
|
|
|
+
|
|
|
+* The :genex:`COMPILE_ONLY` generator expression has been added which provides
|
|
|
+ compilation usage requirements without any linking requirements.
|
|
|
+
|
|
|
+* The :genex:`LIST` generator expression was added to manage lists.
|
|
|
+
|
|
|
+* The :command:`install(CODE)` and :command:`install(SCRIPT)` commands
|
|
|
+ now support the :genex:`$<INSTALL_PREFIX>` generator expression.
|
|
|
+
|
|
|
+* The :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property now supports
|
|
|
+ :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
|
|
+
|
|
|
+* The :prop_tgt:`<LANG>_CLANG_TIDY`, :prop_tgt:`<LANG>_CPPCHECK`,
|
|
|
+ :prop_tgt:`<LANG>_CPPLINT`, and :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE`,
|
|
|
+ target properties now support
|
|
|
+ :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
|
|
+
|
|
|
+* 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.
|
|
|
+
|
|
|
+* The :genex:`$<PATH>` generator expression learned to process list of paths
|
|
|
+ for decomposition and transformation operations.
|
|
|
+
|
|
|
+* :manual:`cmake-presets(7)` files now support schema version ``7``.
|
|
|
+
|
|
|
+* :manual:`cmake-presets(7)` now supports ``$penv{}`` macro expansion
|
|
|
+ in ``include`` fields.
|
|
|
+
|
|
|
+* The :module:`Dart` and :module:`FindDart` modules have been deprecated via
|
|
|
+ policy :policy:`CMP0145`. Port projects to the :module:`CTest` module.
|
|
|
+
|
|
|
+* The :module:`FindPythonInterp` and :module:`FindPythonLibs` modules have
|
|
|
+ been fully deprecated via policy :policy:`CMP0148`. Port projects to
|
|
|
+ :module:`FindPython3`, :module:`FindPython2`, or :module:`FindPython`.
|
|
|
+
|
|
|
+* The :prop_sf:`SKIP_LINTING` source file property was added to suppress
|
|
|
+ target-wide code checks on specific sources.
|
|
|
+
|
|
|
+* The :prop_tgt:`SYSTEM` target property is now honored for Apple Frameworks.
|
|
|
+
|
|
|
+* GNU (and GNU-compatible) linkers gained support for a ``--dependency-file``
|
|
|
+ flag in GNU Binutils 2.35 and LLVM's LLD 12.0.0. The
|
|
|
+ :ref:`Makefile <Makefile Generators>` and :ref:`Ninja <Ninja Generators>`
|
|
|
+ generators will now add these flags so that files read by the linker will
|
|
|
+ cause a relink if they change (typically modified timestamps).
|
|
|
+
|
|
|
+ This feature can be controlled by the variable
|
|
|
+ :variable:`CMAKE_LINK_DEPENDS_USE_LINKER`.
|
|
|
+
|
|
|
+* The :generator:`Visual Studio 9 2008` generator is now deprecated
|
|
|
+ and will be removed in a future version of CMake.
|
|
|
+
|
|
|
+* :ref:`Visual Studio Generators`, for VS 15.8 (2017) and newer, now
|
|
|
+ build custom commands in parallel. See policy :policy:`CMP0147`.
|
|
|
+
|
|
|
+* Variables :variable:`CMAKE_VS_DEBUGGER_COMMAND`,
|
|
|
+ :variable:`CMAKE_VS_DEBUGGER_COMMAND_ARGUMENTS`,
|
|
|
+ :variable:`CMAKE_VS_DEBUGGER_ENVIRONMENT`, and
|
|
|
+ :variable:`CMAKE_VS_DEBUGGER_WORKING_DIRECTORY` were added to initialize
|
|
|
+ corresponding target properties.
|
|
|
+
|
|
|
+* The :ref:`Visual Studio Generators` for VS 2015 and above learned to
|
|
|
+ select the Windows SDK version explicitly using a ``version=`` field
|
|
|
+ in the :variable:`CMAKE_GENERATOR_PLATFORM` variable.
|
|
|
+ See :ref:`Visual Studio Platform Selection`.
|
|
|
+
|
|
|
+* The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION` variable
|
|
|
+ was added to initialize the :prop_tgt:`VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION`
|
|
|
+ target property on all targets when they are created.
|