# Introduction

CMake is a tool to manage building of source code. Originally, CMake was designed as a generator for various dialects of `Makefile`, today CMake generates modern buildsystems such as `Ninja` as well as project files for IDEs such as Visual Studio and Xcode.

CMake is widely used for the C and C++ languages, but it may be used to build source code of other languages too.

People encountering CMake for the first time may have different initial goals. To learn how to build a source code package downloaded from the internet, start with the `User Interaction Guide`. This will detail the steps needed to run the `cmake(1)` or `cmake-gui(1)` executable and how to choose a generator, and how to complete the build.

The `Using Dependencies Guide` is aimed at developers wishing to get started using a third-party library.

For developers starting a project using CMake, the `CMake Tutorial` is a suitable starting point. The `cmake-buildsystem(7)` manual is aimed at developers expanding their knowledge of maintaining a buildsystem and becoming familiar with the build targets that can be represented in CMake. The `cmake-packages(7)` manual explains how to create packages which can easily be consumed by third-party CMake-based buildsystems.

# Command-Line Tools

- cmake(1)
- ctest(1)
- cpack(1)

# Interactive Dialogs

- cmake-gui(1)
- ccmake(1)

# Reference Manuals

- cmake-buildsystem(7)
- cmake-commands(7)
- cmake-compile-features(7)
- cmake-developer(7)
- cmake-env-variables(7)
- cmake-file-api(7)
- cmake-generator-expressions(7)
- cmake-generators(7)
- cmake-language(7)
- cmake-modules(7)
- cmake-packages(7)
- cmake-policies(7)
- cmake-properties(7)
- cmake-qt(7)
- cmake-server(7)
- cmake-toolchains(7)
- cmake-variables(7)
- cpack-generators(7)

# Guides

- CMake Tutorial
- User Interaction Guide
- Using Dependencies Guide

# Release Notes

- CMake Release Notes

# Index and Search

- Index

- Search Page