読み方 : シーメイク
CMake
概要

CMake自体がコンパイルやビルドを行うわけではなく、「CMakeLists.txt」と呼ばれる設定ファイルを読み込み、LinuxであればMakefile、WindowsであればVisual StudioのプロジェクトファイルやNinja用ビルドファイルなど、各環境に対応したビルドファイルを生成する。開発者は一つの CMakeLists.txt を記述するだけで、複数のOSやコンパイラ、統合開発環境向けのビルド環境を用意できる。
CMakeLists.txt には、ビルド対象のソースファイル、生成する実行ファイルやライブラリの名前、依存ライブラリ、コンパイルオプションなどを記述する。コンパイラやライブラリの検出機能を備え、環境に応じた設定を自動的に調整することができる。外部ライブラリの取得や依存関係の解決を支援する機能も提供されている。
設定ファイルは独自のスクリプト言語で記述され、条件分岐や変数、関数の定義などが可能である。ビルドはソースディレクトリとは別のディレクトリで行う「アウトオブソースビルド」が標準的な運用で、「cmake -B build」コマンドでビルドディレクトリを生成し、「cmake --build build」コマンドでコンパイルを実行する流れが一般的とされる。
CMakeはLLVMやOpenCV、Qt、ROSなど様々な大規模オープンソースプロジェクトで採用されており、C++プロジェクトのビルド管理ツールとして広く普及している。バージョン3系以降はターゲットベースの設定スタイルが推奨されており、target_include_directories() や target_link_libraries() を使った記述が現代的な書き方とされている。