Version | Change log |
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 |
CMake 3.31.4 Jan 11, 2025 |
VS: Factor out check for mixed C and C++ target VS: Restore support for mixing C++23 and C in one target with clang-cl cmLocalUnixMakefileGenerator3: Simplify progress command generation Makefile: Fix per-directory codegen target Makefile: Enable progress messages for codegen target cmGlobalNinjaGenerator: Remove unused local variable cmGlobalNinjaGenerator: Remove unnecessary local variable cmGlobalNinjaGenerator: Fix local variable name for codegen target cmGlobalNinjaGenerator: Clarify order of codegen build statement logic cmGlobalNinjaGenerator: Simplify per-directory configuration list lookup Ninja: Add missing top-level codegen dependencies on per-directory codegen Tests/RunCMake/CXXModules: Rename FileSetModules cases to be more specific target_sources: Improve error message for CXX_MODULES on INTERFACE libraries Help: Update link to UTF-8 RFC 3629 ci: update macOS jobs to use Xcode 16.2 CMake 3.31.3 install: Restore treatment of DESTINATION as a single-valued keyword |
CMake 3.31.3 Dec 25, 2024 |
VS: Factor out check for mixed C and C++ target VS: Restore support for mixing C++23 and C in one target with clang-cl cmLocalUnixMakefileGenerator3: Simplify progress command generation Makefile: Fix per-directory codegen target Makefile: Enable progress messages for codegen target cmGlobalNinjaGenerator: Remove unused local variable cmGlobalNinjaGenerator: Remove unnecessary local variable cmGlobalNinjaGenerator: Fix local variable name for codegen target cmGlobalNinjaGenerator: Clarify order of codegen build statement logic cmGlobalNinjaGenerator: Simplify per-directory configuration list lookup Ninja: Add missing top-level codegen dependencies on per-directory codegen Tests/RunCMake/CXXModules: Rename FileSetModules cases to be more specific target_sources: Improve error message for CXX_MODULES on INTERFACE libraries Help: Update link to UTF-8 RFC 3629 ci: update macOS jobs to use Xcode 16.2 CMake 3.31.3 install: Restore treatment of DESTINATION as a single-valued keyword |
CMake 3.31.2 Dec 6, 2024 |
AIX: Disallow TARGET_SONAME_* genex for AIX_SHARED_LIBRARY_ARCHIVE targets AIX: Propagate AIX_SHARED_LIBRARY_ARCHIVE through exports GNU linker: Use single-argument form of --dependency-file flag fileapi: Do not expose flags for linker-generated dependencies LINK_OPTIONS: Fix crash on empty LINKER: prefix ci: Update to ROCm 6 HIP on Fedora 41 CMake 3.31.2 Tutorial: Restore TODO 4 comment in step 7 Intel/Classic: deactivate linker dependency file support FindPython: Ensure SABIModule is found in all cases Autogen: Restore <target_name>_autogen_timestamp_deps target Autogen: Fix Ninja Multi-Config dependency graph regression Autogen: Revert adding ui files to byproducts of the timestamp target FindRuby: Add support for 3.4 |
CMake 3.31.1 Nov 25, 2024 |
Help: Add missing one-line summary to policy CMP0132 FindBoost: Add support for Boost 1.86 ci: Rebuild Fedora 41 image with updates Clarify advice given by compatibility deprecation message for CMake < 3.10 Help: Clarify instructions for using older VS toolsets with newer VS versions ci: Update Windows builds to MSVC 14.42 toolset ci: update macOS jobs to use Xcode 16.1 libarchive: Update script to get 3.7.7 execute_process: Restore CLOEXEC on OUTPUT_FILE and ERROR_FILE descriptors CMake 3.31.1 GoogleTest: Clear script content buffer on flush and flush less often GoogleTest: Avoid extra call to set DISABLED test property in discovery CMP0175: Do not reject USES_TERMINAL for add_custom_command(TARGET) Linker configuration: Add missing platforms LLD linker: avoid regression on archive libraries deduplication cmExperimental: Make CPS-export experimental notice more consistent FindSQLite3: Guard calls to pkg_check_modules Help: Guard calls to pkg_check_modules in cmake-developer(7) example FindImageMagick: Fix ARCH_INCLUDE_DIR detection for version 7 and newer Linux: Recognize multiarch directories for musl-linux-any |
CMake 3.31.0 Nov 9, 2024 |
New Features: Presets: “cmake-presets(7)” files may now include comments using the key $comment” at any level within the JSON object to provide documentation. “cmake-presets(7)” files may now request graphviz output using the “graphviz” key in a configure preset. Generators: The Ninja Generators and Makefile Generators now produce a “codegen” build target. See policy “CMP0171”. It drives a subset of the build graph sufficient to run custom commands created with "add_custom_command()”'s new “CODEGEN” option. Command-Line: The “cmake --workflow” mode now accepts a preset name as the first argument, allowing the simpler command line “cmake --workflow <preset>”. The “cmake -LR[A][H]” option was added to list cache entries whose names match a regular expression. Compilers: The LFortran compiler is now supported with “compiler id” “LFortran”. Commands: The “add_custom_command()” command gained a “CODEGEN” option to mark a custom command’s outputs as dependencies of a “codegen” target. See policy “CMP0171”. The “cmake_pkg_config()” command was added as an endpoint for using CMake’s native pkg-config format parser. The only supported option in this release is “EXTRACT”, which provides low-level access to the values produced by parsing a pkg-config file. For most users, this is not yet a suitable replacement for the “FindPkgConfig” module. The “file(ARCHIVE_CREATE)” command gained a “WORKING_DIRECTORY” option to specify a working directory for the archiving process. The “file(MAKE_DIRECTORY)” command gained a “RESULT” option to capture failure in a result variable. The “install(FILES)” and “install(DIRECTORY)” commands’ “TYPE” argument gained support for a “LIBEXEC” type. Variables: The “CMAKE_AIX_SHARED_LIBRARY_ARCHIVE” variable and corresponding “AIX_SHARED_LIBRARY_ARCHIVE” target property were added to create shared libraries on AIX as sh |
CMake 3.30.5 Oct 9, 2024 | Only check non-cache vars when setting project vars |