CMake is an open source, cross-platform family of tools designed to build, test, and package software. CMake gives you control of the software compilation process using simple independent configuration files. Unlike many cross-platform systems, CMake is designed to be used in conjunction with the native build environment.

More than 2 Million downloads a month


CMake is the de-facto standard software build system because it can:

  • Be extended as necessary to support new features.
  • Generate a native build environment that will compile source code, create libraries, generate wrappers, and build executables in arbitrary combinations.
  • Support multiple builds from a single source tree.
  • Support static and dynamic library builds.
  • Generate a cache file that is designed to be used with a graphical editor.
  • Support complex directory hierarchies and applications dependent on several libraries.
  • Handle situations where executables must be built in order to generate code that is then compiled and linked into a final application.

Please visit the Features page for a comprehensive list.


A Virtual Bridge

CMake’s Rich History

The original author of CMake, Bill Hoffman, is also a co-founder and the current CTO of Kitware. He created CMake in response to the need for a powerful, cross-platform build environment for The Insight Toolkit (ITK) and the Visualization Toolkit (VTK).

Learn More

CMake Logo

CMake Resources

Whether you are just getting started or are already part of the CMake community, check out our helpful resources page.