CMake 3.27 Release Notes

Changes made since CMake 3.26 include the following.

New Features

Debugger

  • cmake(1) now supports interactive debugging of the CMake language. See the --debugger option.

Presets

Generators

Languages

  • The CXX language now treats source file extensions .ccm, .cxxm, and .c++m as C++.

File-Based API

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

  • The cmake-file-api(7) "codemodel" version 2 "target" object gained a new "frameworks" field in the "compileGroups" objects.

Platforms

  • Apple text-based stubs (i.e. .tbd files) may now be created for shared libraries on macOS. See the ENABLE_EXPORTS property.

Commands

Variables

Properties

Modules

  • The FindCUDAToolkit module now provides an imported target for cudla, and imported targets for CUPTI's nvperf and pcsampling components.

  • The FindDoxygen module's doxygen_add_docs() command gained a CONFIG_FILE option to specify a custom doxygen configuration file.

  • The FindOpenGL module gained support for components GLES2 and GLES3.

  • The FindwxWidgets module now provides an imported target.

Generator Expressions

Autogen

CTest

CPack

Deprecated and Removed Features

Other Changes

  • cmake --build $dir --verbose will now print the working directory and command line used to perform the build.

  • The ExternalProject and 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 CMP0150.

  • The ExternalProject configure step no longer re-runs on every build when the UPDATE_DISCONNECTED option is enabled. It will only re-run if details of the download, update, or patch step change.

  • The ExternalProject update and patch steps now always re-run if any of their details change, even if the UPDATE_DISCONNECTED option is enabled. If using the GIT download method, and the GIT_TAG is changed to a commit that is not already known locally, an error is now issued instead of silently using the previous GIT_TAG.

  • The FindPython, FindPython2 and FindPython3 modules now support the Windows ARM64 platform.

  • The file(GET_RUNTIME_DEPENDENCIES) command now case-preserves DLL names reported on Windows. They are still converted to lowercase for filter matching.

  • The SYSTEM target property is now honored for Apple Frameworks.

  • Visual Studio Generators, for VS 15.8 (2017) and newer, now build custom commands in parallel. See policy CMP0147.