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.cpp

main.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

実行ファイル MyAppbuild/ ディレクトリ内に生成されます。

./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 foundadd_executable() の記述がないCMakeLists.txtを再確認

8. CMakeとMakefileの関係

CMakeはMakefileを生成するツールであり、直接の代替ではありません。
CMakeが生成するMakefileをmakeが実行する、という流れです。

要素役割
CMake設定・構成の自動生成
Makefile実際のビルド手順を定義
makeMakefileを読み取ってビルド実行

○ 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基礎講座

(第2回:CMakeLists.txtの基本) →
CMake講座トップページに戻る