CMakeの基本と最小構成の作り方|初心者向けC++ビルド入門
◎ 本記事は「CMake講座」シリーズの第1回です。
次回 ->【第2回】CMakeLists.txtの基本を理解しよう〜主要コマンドと構成の基礎〜)○ シリーズ全体の構成はこちら: CMake講座トップページ
【第1回】CMakeの基本と最小構成を理解しよう!〜C++ビルドの第一歩〜
C++で開発を始めるとき、多くの人が最初に直面するのが「ビルド環境構築」です。
単一ファイルで g++ main.cpp と入力するだけなら簡単ですが、プロジェクトが少し大きくなると、コンパイル・リンク・依存関係の管理が複雑になります。
その問題を解決してくれるのが CMake です。
CMakeは、C/C++のプロジェクトを構築するための「ビルドシステム生成ツール」であり、開発現場では事実上の標準として使われています。
1. CMakeとは何か
CMakeは、C/C++プロジェクトのための ビルド設定生成ツール です。
CMakeLists.txt という設定ファイルをもとに、Makefile や Ninja、Visual Studio用のプロジェクトファイルを自動生成します。
CMakeLists.txt → (CMake) → Makefile → (make) → 実行ファイルこの仕組みにより、「一つの設定でWindows / macOS / Linuxのすべてに対応できる」という柔軟さを持ちます。
2. CMakeを使うメリット
| 項目 | 説明 |
|---|---|
| マルチプラットフォーム対応 | OSやIDEを問わず利用可能 |
| 依存関係管理 | 外部ライブラリや自作モジュールを簡単にリンクできる |
| 再現性の高いビルド | チーム全員が同じ手順でビルドできる |
| 自動化との相性 | CI/CDやテスト自動化に組み込みやすい |
◎ CMakeは、単なる補助ツールではなく「開発の基盤」として機能します。
3. CMakeのインストール
Linux(Ubuntu/Debian系)では以下のコマンドでインストールできます。
sudo apt install cmake build-essential
macOSではHomebrewを利用します。
brew install cmake
Windowsの場合は、Visual Studio Installerで「C++デスクトップ開発」を選択すればCMakeが同梱されます。
4. 最小構成のCMakeプロジェクトを作成する
ここでは、最小限のCMakeプロジェクトを実際に作ってみましょう。
ディレクトリ構成
MyApp/
├── CMakeLists.txt
└── main.cppmain.cpp
#include <iostream>
int main() {
std::cout << "Hello, CMake!" << std::endl;
return 0;
}CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyApp LANGUAGES CXX)
add_executable(MyApp main.cpp)◎ これで最小構成のCMakeプロジェクトが完成しました。ファイルは2つだけです。
5. ビルドディレクトリを分けてビルドする
CMakeでは、ソースコードとビルド成果物を分けて管理するのが基本です。これを「アウト・オブ・ソースビルド」と呼びます。
mkdir build
cd buildここで、CMakeを実行して設定を生成します。
cmake ../このコマンドは「上の階層(../)にあるCMakeLists.txtを読み込んで設定を作る」という意味です。
すると、現在の build フォルダ内に Makefile が生成されます。
続いて、生成されたMakefileを使ってビルドします。
make出力例:
Scanning dependencies of target MyApp
[100%] Built target MyApp実行ファイル MyApp が build/ ディレクトリ内に生成されます。
./MyApp出力:
Hello, CMake!○ これがCMakeを使った最も基本的なビルドの流れです。
6. モダンCMakeのコマンド形式
CMake 3.13以降では、より明示的にパスを指定できるオプション付き形式が推奨されています。
cmake -S ./ -B ./build
cmake --build ./build-S ./は「ソースディレクトリ」を指定-B ./buildは「ビルドディレクトリ」を指定--buildは、CMakeが自動的に検出したビルドツール(makeやninja)でコンパイルを実行
つまりこの2行は、「buildディレクトリを作って設定→ビルドする」という一連の操作を自動で行います。
○ この書き方を覚えておくと、スクリプト化やCI/CD設定時にも便利です。
7. よくあるミスと対処法
| エラー内容 | 原因 | 対処 |
|---|---|---|
Could not find CMakeLists.txt | パスが間違っている | cmake ../ または -S ./ の指定を確認 |
CMAKE_CXX_COMPILER not found | コンパイラがインストールされていない | sudo apt install g++ などで導入 |
Target not found | add_executable() の記述がない | CMakeLists.txtを再確認 |
8. CMakeとMakefileの関係
CMakeはMakefileを生成するツールであり、直接の代替ではありません。
CMakeが生成するMakefileをmakeが実行する、という流れです。
| 要素 | 役割 |
|---|---|
| CMake | 設定・構成の自動生成 |
| Makefile | 実際のビルド手順を定義 |
| make | Makefileを読み取ってビルド実行 |
○ CMakeを使うことで、開発者は「ビルド設定を記述する手間」から解放されます。
9. まとめ
| 要素 | コマンド | 目的 |
|---|---|---|
| CMake設定生成 | cmake ../ または cmake -S ./ -B ./build | 設定を構成 |
| ビルド | make または cmake --build ./build | コンパイル実行 |
| 実行 | ./build/MyApp | 結果を確認 |
◎ これで、CMakeを使った基本的なビルドの流れが理解できたはずです。
今後の記事では、この基礎の上に、ライブラリ連携・ビルドタイプ・テストなどを追加していきます。
10. 次回予告
次回は「CMakeLists.txtの基本を理解しよう」になります。project(), set(), target_link_libraries() など、CMakeの基本命令を順に解説します。
◇CMake基礎講座

