| Version | Change log |
| CMake 4.2.1 Dec 9, 2025 | This version made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes and/or fix regressions. |
| CMake 4.2.0 Nov 20, 2025 |
New Features: File-Based API: The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.9. The cmake-file-api(7) "codemodel" version 2 "target" and "directory" objects gained a new codemodelVersion field. The cmake-file-api(7) "codemodel" version 2 now includes imported targets and all interface library targets in its replies. Previously, imported targets were omitted, and only those interface targets that participated in the build system were included. The following changes support these new additions: The "target" object gained imported, local, and abstract fields. The "target" object's type field can now also hold the value UNKNOWN_LIBRARY. The "codemodel" object's configurations entries gained a new abstractTargets array. Entries in the directories and projects arrays of the "codemodel" object's configurations entries gained a new abstractTargetIndexes array. The cmake-file-api(7) "codemodel" version 2 "target" object gained new linkLibraries, interfaceLinkLibraries, compileDependencies, interfaceCompileDependencies, objectDependencies, and orderDependencies fields. Generators: The Visual Studio 18 2026 generator was added. The FASTBuild generator was added. Platforms: CMake now supports Cross Compiling for Emscripten with simple toolchain files. Command-Line: The cmake(1) command-line tool now supports cmake -E copy_if_newer and cmake -E copy_directory_if_newer subcommands to copy files based on timestamp comparison instead of content comparison. These commands copy files only if the source is newer than the destination, providing better performance for build systems compared to copy_if_different which compares file contents. Commands: The cmake_language(TRACE) command was added to enable or disable tracing during script execution. The set(CACHE{<variable>}) and unset(CACHE{<variable>}) commands were added to explicitly |
| CMake 4.1.3 Nov 19, 2025 |
When building for macOS with the Xcode generator, CMAKE_OSX_DEPLOYMENT_TARGET once again defaults to the host's macOS version if it is older than the macOS SDK version, as it did in CMake versions prior to 4.0. The execute_process() command once again terminates child processes when its TIMEOUT is reached. This was accidentally regressed by CMake 3.29. |
| CMake 4.1.2 Oct 3, 2025 |
Ninja: escape special characters in custom command comments cmCTestCurl: Avoid using undocumented type for CURLOPT_PROXYTYPE values ASM: Restore CMAKE_ASM_COMPILER_ARCHITECTURE_ID persistence Tests: Extend RunCMake.ParseImplicitLinkInfo for LFortran 0.55.0 Tests: Teach RunCMake to ignore Xcode an IDERunDestination warning ci: update macOS jobs to use Xcode 26.0 cmFileSet: Constify local generator usage cmGeneratorExpressionEvaluationFile: Constify some local generator usage cmGeneratorExpressionNode: Simplify EvaluateDependentExpression signature GenEx: Rename cmGeneratorExpressionContext to cm::GenEx::Evaluation GenEx: Factor out a dedicated evaluation Context structure GenEx: Collect evaluation arguments into local Context structures GenEx: Construct cmGeneratorExpressionDAGChecker with full evaluation context GenEx: Consolidate target property evaluation context arguments Help: Document when policy CMP0189 takes effect cmGeneratorTarget: Pass genex evaluation context to IsTransitiveProperty file(GENERATE): Record CMP0189 at each call site bootstrap: Fix compilation with gcc 16 devirtualization cmGeneratorTarget: Factor out helper to detect LINK_LIBRARIES evaluation CMP0189: Restore support for linking $<TARGET_PROPERTY:tgt,LINK_LIBRARIES> CMake 4.1.2 LFortran: Update flags renamed by version 0.55 GNUInstallDirs: Fix regression on -DCMAKE_INSTALL_= in /usr cmLocalGenerator: check variables before usage cmPropertySentinel: update definition FindPython: Ensure correct handling of Python_FIND_ABI variable project: Revert changes to VERSION handling |
| CMake 4.0.3 Jun 13, 2025 |
Ben Boeckel (1): Help/cmake-cxxmodules: note GCC 15 support Brad King (12): Help: Add 4.0 release note about file path case sensitivity on Windows Normalize PWD environment variable before using it CMakeDetermineCompilerABI: Comment implicit link directory exclusion macOS: Restore RPATH entry for libraries linked from /usr/local/lib ci: Tell CudaOnly.Architecture test what specific architecture to use ci: add tags to tie CUDA jobs to runners with hardware supporting them CUDA/Clang: Prefer NVCC’s default architecture for each CUDA Toolkit version Tests: Fix RunCMake.CTestCommandLine under ctest -T Coverage AUTOMOC: Avoid compiler warnings while computing predefines Help: Fix wording in tutorial workflow description macOS: Restore support for LLVM/Clang without explicit CMAKE_OSX_SYSROOT CMake 4.0.2 Craig Scott (2): Help: VS_DEBUGGER_WORKING_DIRECTORY precedence Xcode: Use DEBUGGER_WORKING_DIRECTORY as a fallback for scheme work dir Gregor Jasny (1): macOS: Reliably apply workaround for system curl 8.{3,4,5} LibreSSL backend Marc Chevrier (3): Ninja generator: restore correct encoding for policy CMP0181=OLD FindPython: fix the definition of SABI artifacts Help: block() command: enhance the PROPAGATE example Matthew Woehlke (3): Help: Fix overlapping text in footnotes CPS: Fix mangling of relative requirement names find_package: Fix performance regression in 4.0.0 release Raul Tambre (1): Clang: MSVC C++26 support Robert Maynard (3): ci: Tell CudaOnly.CompileFlags test what specific architecture to use CUDA/Clang: Update architectures supported by CUDA 12.8 CUDA: Add CUDA 12.9 new architectures and family syntax |
| CMake 4.0.2 May 5, 2025 |
Brad King (16): Help: Document CMAKE_UNITY_BUILD_RELOCATABLE variable Help: Add 4.0 release note for UNITY_BUILD_RELOCATABLE Help: Clarify wording of UNITY_BUILD_RELOCATABLE path alternatives get_filename_component: Restore lexical preprocessing of REALPATH for compat ci: update macOS jobs to use Xcode 16.3 FindXCTest: Pass -bundle_loader linker flag for test module more reliably Restore expansion of leading ‘~’ as home directory in input paths Tests: Isolate RunCMake.LinkWarningAsError from -Werror flags in environment Source: Simplify FindProgram calls cmSystemTools: Restore FindProgram look-up of on-disk case on Windows cmSystemTools: Simplify call to FindProgram for our own executable Help: Document CMAKE_OSX_SYSROOT default change in 4.0 cmXCodeObject: Drop unused CoreFoundation header FindXCTest: Fix test module generation for Xcode 16 Help: Add note about /usr/local/include on macOS without CMAKE_OSX_SYSROOT CMake 4.0.1 Craig Scott (3): Help: Fix inaccurate wording for CMAKE_XCODE_SCHEME_… variables Help: Improve wording of docs related to MSVC runtime checks Help: Fix typo in 4.0 release notes for CPack archive generator Matthew Woehlke (2): find_package: Restore component requirements in nested calls find_package: Add minimal support for CPS multiple inclusion Sergey Fedorov (2): macOS: Define _DARWIN_C_SOURCE in more sources Source: Include specific CoreFoundation headers instead of umbrella header |
| CMake 4.0.1 Apr 11, 2025 |
New Features: File-Based API: The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.8. The cmake-file-api(7) "codemodel" version 2 "target" object gained a new debugger field. Command-Line: The cmake --link-no-warning-as-error option was added to suppress the effects of the LINK_WARNING_AS_ERROR target property and CMAKE_LINK_WARNING_AS_ERROR variable. The cmake --project-file option was added to specify an alternate filename for CMakeLists.txt files. This is intended for temporary use by developers during an incremental transition and not for publication of a final product. CMake will always emit a warning when the project file is anything other than CMakeLists.txt. Commands: The target_link_libraries() command now supports the LINKER: prefix. Variables: The AIX and CMAKE_HOST_AIX variables are now set to true when the target or host system is AIX, respectively. Linker flag variables learned to support the LINKER: prefix: CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_<CONFIG> CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS_<CONFIG> CMAKE_MODULE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS_<CONFIG> See policy CMP0181. The CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL variable was added to specify the execute_process() command's default COMMAND_ERROR_IS_FATAL behavior. The CMAKE_<LANG>_LINK_MODE and CMAKE_<LANG>_DEVICE_LINK_MODE variables were added to provide information on how the link step is done. The CMAKE_LINK_WARNING_AS_ERROR variable and corresponding LINK_WARNING_AS_ERROR target property were added to link using a linker-specific flag to treat warnings as errors. The CMAKE_MSVC_RUNTIME_CHECKS variable and MSVC_RUNTIME_CHECKS target property were introduced to select runtime checks for compilers targeting the MSVC ABI. See policy CMP0184. The CMAKE_POLICY_VERSION_MINIMUM variable was added to help packagers and end users try to configure existing projects that have not been upd |
| CMake 4.0.0 Mar 29, 2025 |
New Features: File-Based API: The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.8. The cmake-file-api(7) "codemodel" version 2 "target" object gained a new debugger field. Command-Line: The cmake --link-no-warning-as-error option was added to suppress the effects of the LINK_WARNING_AS_ERROR target property and CMAKE_LINK_WARNING_AS_ERROR variable. The cmake --project-file option was added to specify an alternate filename for CMakeLists.txt files. This is intended for temporary use by developers during an incremental transition and not for publication of a final product. CMake will always emit a warning when the project file is anything other than CMakeLists.txt. Commands: The target_link_libraries() command now supports the LINKER: prefix. Variables: The AIX and CMAKE_HOST_AIX variables are now set to true when the target or host system is AIX, respectively. Linker flag variables learned to support the LINKER: prefix: CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_<CONFIG> CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS_<CONFIG> CMAKE_MODULE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS_<CONFIG> See policy CMP0181. The CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL variable was added to specify the execute_process() command's default COMMAND_ERROR_IS_FATAL behavior. The CMAKE_<LANG>_LINK_MODE and CMAKE_<LANG>_DEVICE_LINK_MODE variables were added to provide information on how the link step is done. The CMAKE_LINK_WARNING_AS_ERROR variable and corresponding LINK_WARNING_AS_ERROR target property were added to link using a linker-specific flag to treat warnings as errors. The CMAKE_MSVC_RUNTIME_CHECKS variable and MSVC_RUNTIME_CHECKS target property were introduced to select runtime checks for compilers targeting the MSVC ABI. See policy CMP0184. The CMAKE_POLICY_VERSION_MINIMUM variable was added to help packagers and end users try to configure existing projects that have not been upd |
| CMake 3.31.6 Mar 1, 2025 | Some implementation updates were made to support ecosystem changes and/or fix regressions. |
| CMake 3.31.5 Feb 6, 2025 |
Brad King (5): Clang/CUDA: Fix language-wide flags when linking .so with compiler driver Tests: Update expected results for ninja post-1.12 development FindMatlab: Fix multi-signature function documentation anchors WINDOWS_EXPORT_ALL_SYMBOLS: Fix vftable symbol export on ARM64EC CMake 3.31.5 Felipe Torrezan (1): IAR: decouple linker location from toolkit's bin dir Martin Duffy (1): install: Generate InstallScripts.json in consistent location |