CMake 3.29.2

CMake is an extensible, open-source system that manages the build process in an operating system and in a compiler-independent manner. Unlike many cross-platform systems, CMake is designed to be used in conjunction with the native build environment. Simple configuration files placed in each source directory (called CMakeLists.txt files) are used to generate standard build files (e.g., makefiles on Unix and projects/workspaces in Windows MSVC) which are used in the usual way. CMake can generate a native build environment that will compile source code, create libraries, generate wrappers and build executables in arbitrary combinations.

Tags software-development build-tool
License BSDL
State stable

Recent Releases

3.29.213 Apr 2024 02:25 minor feature: Changes made since CMake 3.29.1: Brad King (4): Tests/RunCMake/CompilerChange: Simplify test cases regression on reconfigure with unnormalized -DCMAKE_ lt;LANG gt;_COMPILER= CMakePackageConfigHelpers: Restore undocumented PACKAGE_PRE_DIR variable CMake 3.29.2. Evan Wilde (1): Swift: Ninja: Remove module dependency for executables. Kai Pastor (1): FindJasper: Jasper::Jasper IMPORTED_CONFIGURATIONS. Matthias Isele (2): FindOpenSSL: Update layout for Shining Light Productions 32-bit package FindOpenSSL: Update layout for Shining Light Productions delibraries.
3.29.105 Apr 2024 06:25 minor feature: Changes made since CMake 3.29.0: Ben Boeckel (2): ExternalProject: add an example of `LIST_SEPARATOR` usage ExternalProject: reword `LIST_SEPARATOR` to indicate what it *does*. Brad King (11): IntelLLVM: Revert accidental use of -external:I with Fortran compilers libuv: Avoid posix_spawn on macOS lt; 10.8 FindPkgConfig: Avoid finding Strawberry Perl's pkg-config libuv: process: de-duplicate conditions for using kqueue libuv: darwin: group kqueue-specific definitions together libuv: macos: use posix poll instead of kqueue FindMPI: finding IntelLLVM wrappers on Windows ctest: Restore enforcement of RESOURCE_LOCK test property ARTOS: Add support for finding library files named with 'lib' pre IntelLLVM: link flags with Visual Studio generators CMake 3.29.1. Charlotte Koch (1): cmSystemTools: compilation on DragonFly BSD. Craig Scott (8): Help: Remove stray formatting for try_compile() LINKER_LANGUAGE keyword try_compile(): Include languages with _ or - when passing linker vars Help: Grammar, typos and wording improvements for linker variables Help: Add custom linker example for CMAKE_ lt;LANG gt;_USING_LINKER_ lt;TYPE gt; Help: CMAKE_ lt;LANG gt;_USING_LINKER_ lt;TYPE gt; can be a list of flags Help: Restructure and improve LINKER_TYPE docs CMakePackageConfigHelpers: Remove unused variable CMakePackageConfigHelpers: Use unique variable name for pkg pre. Evan Wilde (1): Swift: Add CMAKE_LINKER_TYPE support. FeRD (Frank Dana) (1): Help: location of install() note about superseded commands. scivision (2): FindMatlab: R2024a version map Help: emphasize need for VS Integrations with oneAPI Fortran.
3.29.023 Mar 2024 10:05 minor feature: CMake 3.29 Release Notes Changes made since CMake 3.28 include the following. New Features. Command-Line. cmake(1)" "-E cat" can now print the standard input by passing the. argument. Generators. Visual Studio Generators now support selecting between the Intel oneAPI Fortran compiler ("ifx") and the Intel classic Fortran compiler ("ifort") using a "fortran=" field in. CMAKE_GENERATOR_TOOLSET". File-Based API. The "cmake-file-api(7)" "codemodel" version 2 "version" field has been updated to 2.7. The "cmake-file-api(7)" "codemodel" version 2 "target" object gained a new "launchers" field. Compilers. The LLVM/Clang GNU-like frontend on Windows ("clang++") may now be used to compile "CUDA" language sources. Compilers targeting the GNU ABI on Windows (MinGW) may now be used to compile Objective C ("OBJC") and Objective C++ ("OBJCXX"). These include GNU compilers ("gcc" and "g++") and the LLVM/Clang GNU-like frontends ("clang" and "clang++"). TI Clang-based compilers are now supported with compiler id. TIClang". Commands. The add_custom_command(TARGET) signature now supports adding build events through Alias Targets. The "cmake_language(EXIT)" sub-command was added to terminate "cmake. P" scripts with a specified exit code. The "export(SETUP)" sub-command was added to configure export sets. Its "TARGET" option's "XCFRAMEWORK_LOCATION" setting specifies the location of a ".xcframework" that can be substituted for an installed target. The "if()" command gained new tests "IS_READABLE", "IS_WRITABLE" and. IS_EXECUTABLE" to check file or directory permissions. Variables. The "CMAKE_INSTALL_PRE" environment variable was added to provide a default value for the "CMAKE_INSTALL_PRE" variable. The "CMAKE_LINKER_TYPE" variable and corresponding "LINKER_TYPE" target property were added to specify what linker to use with some toolchains. The "CMAKE_ lt;LANG gt;_COMPILER_LINKER". CMAKE_ lt;LANG gt;_COMPILER_LINKER_ID". CMAKE_ lt;LANG gt;_COMPILER_LINKER_VERSION" and. CMAKE_ lt;LANG gt;
3.28.308 Feb 2024 02:05 minor feature: Brad King (5): zlib: Fix 1.2.13 version and date notice Tests: Add case covering PCH in a unity build cmGlobalGenerator: Add unity/pch sources after computing compile features Unity: Clarify source comments on unity build transformation CMake 3.28.3 zlib upstream (1): zlib 2022-10-12 (04f42cec)
3.28.231 Jan 2024 06:45 minor feature:
3.28.115 Dec 2023 10:25 minor feature:
3.28.007 Dec 2023 11:25 minor feature:
3.26.628 Nov 2023 10:25 minor feature:
3.27.707 Oct 2023 12:05 minor feature:
3.27.624 Sep 2023 04:05 minor feature:
3.27.520 Sep 2023 06:45 minor feature:
3.27.424 Aug 2023 11:05 minor feature:
3.27.317 Aug 2023 14:05 minor feature:
3.27.211 Aug 2023 10:45 minor feature:
3.27.127 Jul 2023 18:45 minor feature:
3.26.523 Jul 2023 14:45 minor feature:
3.27.019 Jul 2023 03:45 minor feature:
3.26.419 May 2023 07:45 minor feature:
3.26.305 Apr 2023 10:25 minor feature:
3.26.231 Mar 2023 12:25 minor feature:
3.26.124 Mar 2023 07:25 minor feature:
3.26.015 Mar 2023 10:45 minor feature:
3.25.220 Jan 2023 14:45 minor feature:
3.25.101 Dec 2022 14:05 minor feature:
3.25.017 Nov 2022 15:45 minor feature:
3.23.405 Oct 2022 21:05 minor feature:
3.22.503 Jun 2022 00:45 minor feature:
3.23.226 May 2022 07:45 minor feature:
3.23.113 Apr 2022 20:05 minor feature:
3.22.305 Mar 2022 07:45 minor feature:
3.21.502 Feb 2022 16:45 minor feature:
3.22.226 Jan 2022 07:05 minor feature:
3.22.108 Dec 2021 14:45 minor feature:
3.22.019 Nov 2021 03:23 minor feature:
3.21.428 Oct 2021 06:45 minor feature: Changes in 3.21.4 since 3.21.3: Ben Boeckel (2): Tests/RunCMake/Autogen: test CMP0111 behavior. cmQtAutoGenInitializer: support IMPLIB-only imported targets. Brad King (11): Tests: RunCMake.XcodeProject XcodeIOSInstallCombined cases for Xcode 13.0. gitlab-ci: update macOS jobs to use Xcode 13.0. bootstrap: Enable cmake_language command to support cmake-gui with Qt 6.2. ci: Enable CTest.Update CVS,SVN,HG tests. MSVC: Tolerate cxx_std_23 feature on older compiler versions. zstd: Backport for SIGBUS on armv6 from zstd 1.5.0. IRSL: discovery of VS 2022 v143 toolset redistributables for preview 5. Source: typo in _WIN32 preprocessor checks. BinUtils: Avoid llvm-strip versions older than Clang 11. VS: Update Visual Studio 17 2022 generator for the Release Candidates. CMake 3.21.4. Erlend E. Aasland (1): CPack/IFW: Add support for QtIFW 4.1. Gregor Jasny (1): Tests: Specify destination for Xcode scheme. Michael Hirsch (1): FindMatlab: Add R2021b = gt; 9.11 version. Robert Maynard (1): NVHPC: only use '-MD' for the C and CXX languages. Seth R Johnson (1): FortranCInterface: regression in timestamp check. Sylvain Joubert (1): TestDriver: old-style-cast warning in C++ mode. Timo Rรถhling (1): GNUInstallDirs: misinterpretation of Debian Policy on LIBEXECDIR.
3.21.321 Sep 2021 21:05 minor feature: Changes in 3.21.3 since 3.21.2: Brad King (10): FindBoost: Add support for Boost 1.77. MSVC: MSVC_TOOLSET_VERSION for VS 2022 v143 toolset. IRSL: Add discovery of VS 2022 v143 toolset redistributables. gitlab-ci: Update Windows builds to MSVC 19.29-16.11 toolset. VS: managed C++ project generation for VS 2022. VS: Update Visual Studio 17 2022 generator for Preview 4. HIP: Detect ROCm path earlier. HIP: Remove ROMClang compiler id and use Clang directly. HIP: Simplify detection of HIP runtime CMake package. CMake 3.21.3. Haibo Huang (1): Android: Restore searching PATH for executables. Jean-Marc Hengen (1): IAR: Restore support for projects not enabling policy CMP0057. Marc Chevrier (1): FindPython: Ensure homebrew on Mac M1 is used. Martin Kojtal (1): Ninja: ARMClang paths for Windows. Zack Galbreath (1): HIP: Use 'rocm_agent_enumerator' to determine CMAKE_HIP_ARCHITECTURES. ulatekh (1): KWSys: SystemTools: Ensure Windows Vista APIs are available before using them.
3.21.226 Aug 2021 13:45 minor feature:
3.21.128 Jul 2021 14:25 minor feature:
3.21.015 Jul 2021 14:05 minor feature:
3.20.522 Jun 2021 19:25 minor feature: Changes in 3.20.5 since 3.20.4: Brad King (7): gitlab-ci: update macOS jobs to use Xcode 12.5. cmGlobalVisualStudio10Generator: Move static functions to anonymous namespace. cmGlobalVisualStudio10Generator: Adopt GetVSInstanceVersion method. VS: Do not apply '/external:W*' flag table mapping on VS lt; 16.10. Tests: xcode version detection for Xcode 13 on ARM. Help: Add 3.20 release note section for 3.20. 3,4,5 . CMake 3.20.5. Craig Scott (1): ExternalProject: Use ref 0 to avoid MSYS/Cygwin shell substitutions. Kyle Edwards (1): CMake: Allow override of unexpected non-flow-control commands.
3.20.415 Jun 2021 13:05 minor feature:
3.20.328 May 2021 16:05 minor feature: Changes in 3.20.3 since 3.20.2: Brad King (7): Help: Use relative path for IDE Integration guide link to preset schema. BinUtils: Use more-private temporary variable names. ObjectiveC: Respect OSX_ARCHITECTURES for OBJC. FindBoost: Add support for Boost 1.76. Ninja: Restore support for Fortran in a symlinked build tree. Utilities/Sphinx: Update man page config for Sphinx 4. CMake 3.20.3. Craig Scott (2): ExternalProject: Ensure git fetch if updating to hash we don't have yet. ExternalProject: Only add git config setting with git 1.7.7 or later. Kyle Edwards (2): Ninja Multi-Config: Split long command lines by config. CMP0082: Check EXCLUDE_FROM_ALL property at generate time. Raul Tambre (3): GNU: C++17 default version. GNU: Final C++20 flags. GNU: C++23 support. Robert Maynard (6): CUDA: improve regex for CUDA Toolkit root from nvcc verbose output. cmCommandLineArgument: Correctly record parsing failures. cmake: `--build` and `--install` error out when encountering bad flags. cmCommandLineArgument: Provide more information syntax error messages. NVHPC: Support explicit language flags. NVHPC: Support Ninja dependency scanning.
3.20.230 Apr 2021 21:25 minor bugfix: ci: pay attention to the machine load when running tests ci: limit builds by machine load Help: Add 3.20 release note for error on unknown arguments gitlab-ci: equally delay all jobs on integration branches Autogen: Restore mocs_compilation in OBJECT libraries Help: Fix typos in cmake-compile-features(7) Help: Do not recommend WCDH in cmake-compile-features(7) Intel: Update Classic compiler version detection for 2021 IntelLLVM: Add special case for ifx 2021.1 version extraction CMake 3.20.2 Help: Behavior of file(TO_NATIVE_PATH) depends on the host platform Help: Document special cases for if(IS_ABSOLUTE) Add missing 'not' in error messages KWIML 2021-04-21 (49d91529) autogen: fix race in depfile parsing Ninja Multi-Config: Correctly generate POST_BUILD custom targets BinUtils: Restore toolchain prefix detection from compiler name 'c++' OpenBSD: Fix system feature definitions
3.20.111 Apr 2021 08:05 minor feature:
3.19.807 Apr 2021 15:25 minor feature:
3.19.716 Mar 2021 15:05 minor feature:
3.20.021 Feb 2021 07:05 minor feature:
3.19.516 Feb 2021 16:25 minor feature:
3.18.612 Feb 2021 10:45 minor feature:
3.19.429 Jan 2021 08:45 minor feature:
3.19.314 Jan 2021 13:45 minor feature:
3.19.217 Dec 2020 23:25 minor feature:
3.19.125 Nov 2020 16:05 minor feature:
3.19.015 Oct 2020 06:45 minor feature:
3.18.408 Oct 2020 01:05 minor feature:
3.18.323 Sep 2020 19:05 minor feature:
3.17.516 Sep 2020 18:05 minor feature:
3.18.221 Aug 2020 13:05 minor feature:
3.18.131 Jul 2020 14:45 minor feature:
3.18.010 Jun 2020 13:45 minor feature:
3.16.805 Jun 2020 13:05 minor feature:
3.17.301 Jun 2020 19:45 minor feature:
3.16.728 May 2020 09:45 minor feature:
3.17.229 Apr 2020 21:25 minor feature:
3.16.612 Apr 2020 02:05 minor feature:
3.17.111 Apr 2020 06:25 minor feature:
3.16.505 Mar 2020 18:45 minor feature:
3.17.013 Feb 2020 15:45 minor feature:
3.16.409 Feb 2020 21:05 minor feature:
3.15.705 Feb 2020 15:45 minor feature:
3.16.322 Jan 2020 18:05 minor feature:
3.16.222 Dec 2019 00:25 minor feature:
3.15.617 Dec 2019 17:25 minor feature:
3.16.111 Dec 2019 14:25 minor feature:
3.15.531 Oct 2019 10:05 minor feature:
3.16.011 Oct 2019 23:25 minor feature:
3.15.401 Oct 2019 18:05 minor feature:
3.15.305 Sep 2019 15:45 minor feature:
3.15.208 Aug 2019 09:45 minor feature:
3.15.127 Jul 2019 13:05 minor feature:
3.14.617 Jul 2019 13:05 minor feature:
3.15.005 Jun 2019 21:05 minor feature:
3.14.501 Jun 2019 09:45 minor feature:
3.14.415 May 2019 09:45 minor feature:
3.14.323 Apr 2019 23:45 minor feature:
3.14.213 Apr 2019 11:45 minor feature:
3.14.130 Mar 2019 10:25 minor feature:
3.14.009 Feb 2019 06:45 minor feature:
3.13.402 Feb 2019 10:25 minor feature:
3.13.315 Jan 2019 06:45 minor feature:
3.13.214 Dec 2018 20:05 minor feature:
3.13.129 Nov 2018 17:45 minor feature:
3.12.403 Nov 2018 07:45 minor feature:
3.13.010 Oct 2018 13:25 minor feature:
3.12.304 Oct 2018 10:25 minor feature:
3.12.208 Sep 2018 15:45 minor feature:
3.12.110 Aug 2018 13:45 minor feature:
3.12.030 Jun 2018 15:45 minor feature:
3.11.415 Jun 2018 14:05 minor feature:
3.11.301 Jun 2018 12:25 minor feature:
3.11.218 May 2018 07:05 minor feature:
3.11.119 Apr 2018 06:05 minor feature:
3.10.317 Mar 2018 17:45 minor feature:
3.11.017 Feb 2018 02:05 minor feature:
3.10.219 Jan 2018 16:25 minor feature:
3.10.115 Dec 2017 13:05 minor feature:
3.9.505 Nov 2017 11:05 minor feature:
3.10.007 Oct 2017 00:45 minor feature:
3.9.406 Oct 2017 08:25 minor feature:
3.9.322 Sep 2017 03:05 minor feature:
3.9.209 Sep 2017 03:05 minor feature:
3.9.114 Aug 2017 06:25 minor feature:
3.9.007 Jun 2017 08:25 minor feature:
3.8.201 Jun 2017 10:45 minor feature:
3.8.104 May 2017 14:45 minor feature:
3.8.008 Feb 2017 15:05 minor feature:
3.7.215 Jan 2017 14:05 minor feature:
3.7.101 Dec 2016 20:45 minor feature:
3.7.013 Nov 2016 02:06 major feature: CMake now supports Cross Compiling for Android with simple toolchain files. The Ninja generator learned to conditionally support Fortran when using a ninja tool that has the necessary features. See generator documentation for details. The if() command gained new boolean comparison operations LESS_EQUAL , GREATER_EQUAL , STRLESS_EQUAL , STRGREATER_EQUAL , VERSION_LESS_EQUAL , and VERSION_GREATER_EQUAL . The try_compile() command source file signature now honors configuration-specific flags (e.g. CMAKE__FLAGS_DEBUG ) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy CMP0066 . Toolchain files may now set CMAKE_EXE_LINKER_FLAGS_INIT , CMAKE_SHARED_LINKER_FLAGS_INIT , and CMAKE_MODULE_LINKER_FLAGS_INIT variables to initialize the CMAKE_EXE_LINKER_FLAGS , CMAKE_SHARED_LINKER_FLAGS , and CMAKE_MODULE_LINKER_FLAGS cache entries the first time a language is enabled in a build tree. CTest now supports test fixtures through the new FIXTURES_SETUP , FIXTURES_CLEANUP and FIXTURES_REQUIRED test properties. When using regular expressions or rerun-failed to limit the tests to be run, a fixture s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture. We no longer provide Linux i386 binaries for download from cmake.org for new versions of CMake. Vim support files cmake-indent.vim , cmake-syntax.vim , and cmake-help.vim have been removed in favor of the files now provided from the vim-cmake-syntax project. Support for building CMake itself with some compilers was dropped: Visual Studio 7.1 and 2005 superseded by VS 2008 and above MinGW.org mingw32 superseded by MSYS2 mingw32 and mingw64 CMake still supports generating build systems for other projects using these compilers.
3.1.207 Feb 2015 16:25 minor bugfix: Fix regression in default configuration selection. Fix packaging of source tarballs with symbolic links. KWSys Directory: Check opendir return value before using it. Help: Clarify status of link_libraries command. Normalize OBJECT_DEPENDS paths to match custom commands. MSVC: Fix initialization of RelWithDebInfo shared library link flags. Fix detection of OpenSSL 1.0.2. Update GNU make error message matching.
3.1.018 Dec 2014 15:15 major feature: A new cmake-compile-features(7) manual was added. The Visual Studio 14 2015 generator was added. Generators for Visual Studio 11 (2012) and above learned to generate projects for Windows Phone and Windows Store. The cmake-language(7) syntax for Variable References and Escape Sequences was simplified in order to allow a much faster implementation. The if() command no longer automatically dereferences variables named in quoted or bracket arguments. The cmake-gui(1) learned to capture output from child processes started by the execute_process() command and display it in the output window. The cmake-language(7) internal implementation of generator expression and list expansion parsers have been optimized and shows non-trivial speedup on large projects. The Makefile generators learned to use response files with GNU tools on Windows to pass library directories and names to the linker. When generating linker command-lines, CMake now avoids repeating items corresponding to SHARED library targets. Many more additions and changes.
3.0.106 Aug 2014 12:26 minor bugfix: Several bugfixes were applied. Semicolon in AIX compiler warning FAIL_REFEX caused it to match other output. Linking into a static library was broken for Xcode 6. CMake build error on QNX. Fix CMakeExpandImportedTargets to avoid Error on non-existent target in get_target_property. cannot build targets 'test' or 'package' after bootstrapping (Brad King). UseSWIG.cmake used wrong filenames for Python. Fortran modules for GNU fortran were not correctly identified.
3.0.009 Jul 2014 23:59 major feature: The CMake language has been extended with *Bracket Argument* and *Bracket Comment* syntax inspired by Lua long bracket. While the CMake documentation has been converted to reStructuredText.