CMakeの基本構文とCMakeLists.txtを初心者向けに解説
先生と生徒の会話形式で理解しよう
生徒
「先生、CMakeって何ですか?Makefileとどう違うんですか?」
先生
「CMakeは、MakefileやVisual Studio用のプロジェクトファイルを自動生成できるツールです。つまり、C++プロジェクトを複数の環境でビルドしやすくする便利な仕組みです。」
生徒
「じゃあ、CMakeLists.txtって何をするファイルなんですか?」
先生
「CMakeLists.txtはCMakeに対して『このプロジェクトはこういう設定でビルドしてください』と指示するファイルです。」
1. CMakeLists.txtの基本構文
CMakeLists.txtは、C++のプロジェクトをビルドするための設定を書き込むテキストファイルです。初心者向けに基本の構文を説明します。
- cmake_minimum_required(VERSION 3.10):CMakeの最低バージョンを指定
- project(ProjectName):プロジェクト名を設定
- add_executable(実行ファイル名 ソースファイルリスト):実行ファイルを作成するための指定
- target_include_directories:ヘッダーファイルのディレクトリを指定
- target_link_libraries:ライブラリとのリンクを指定
2. シンプルなCMakeLists.txt例
先ほどのHello WorldプログラムをCMakeでビルドする場合、以下のようなCMakeLists.txtを作成します。
cmake_minimum_required(VERSION 3.10)
# プロジェクト名
project(HelloCppProject)
# C++の標準バージョンを指定
set(CMAKE_CXX_STANDARD 17)
# 実行ファイルの作成
add_executable(main main.cpp)
このCMakeLists.txtは非常にシンプルで、初心者でもすぐに使える設定です。main.cppというソースファイルをコンパイルして、mainという実行ファイルを生成することを指示しています。
3. CMakeのビルド手順
CMakeでC++プロジェクトをビルドする手順も簡単です。ターミナルで以下のように実行します。
# ビルド用ディレクトリ作成
mkdir build
cd build
# CMakeを使ってMakefileを生成
cmake ..
# Makefileでビルド
make
# 実行
./main
実行すると以下の出力が得られます。
Hello, C++ World!
ポイントは、CMakeはプロジェクト構成を解析して、MakefileやVisual Studio用プロジェクトを自動生成してくれることです。そのため、環境が変わってもCMakeLists.txt一つでビルド可能になります。
4. CMakeを使うメリット
- 複数のプラットフォームやコンパイラに対応できる
- 依存関係のあるファイルだけを再ビルドするので効率的
- ライブラリやヘッダーファイルの管理が簡単
- Visual StudioやXcodeなどのIDE用プロジェクトも自動生成可能
初心者でもCMakeを使いこなせば、C++開発環境を効率よく最適化でき、複雑なプロジェクトでも簡単に管理できます。