LoginSignup
2
3

【初心者向け】CMakeLists.txtを使ってビルドする。

Last updated at Posted at 2023-05-24

はじめに

仕事でCMakeLists.txtと出会い、画期的で驚きました。
ということで、共有です。

Linux, WSLで簡単にビルドできます。

ただ、CMakeLists.txtの内容を書くのも難しいと思います。
まずはCMakeLists.txtとは・・・、なんてのも面倒臭い。

CMakeLists.txtを理解するには、簡潔に2言で
 ・CMakeLists.txtは、CMakeの設定ファイル
 ・CMakeはコンパイラに依存せずビルドを自動化するためのツール
ぐらいでいいです。

気になる方は私が学習に使った参考サイトへ飛んでください。

参考サイト

かみのメモ
 ※このサイトを一番読みました。
CMakeの使い方
実践C++ 応用講座CMake編

目次

使いこなすために簡単な流れを目次として書き出します。

まずはビルド

ファイルの準備

まずは以下のファイルを作ります。

.
├── CMakeLists.txt
└── sampleApp.cpp

sampleApp.cppには以下の内容を書きます。

sampleApp.cpp
#include <iostream>

int main(void)
{
    std::cout << "Hello,World" << std::endl;
}

いよいよ、CMakeLists.txtの内容を書きます。

CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(sampleApp CXX)
add_executable(sampleApp sampleApp.cpp)

これで準備完了です。

ビルド

実際にビルドしてみます。

mkdir build
cd build
cmake ..
cmake --build .

これにて、buildフォルダに実行ファイル(sampleApp)が作られます。

ファイル実行

$ ./sampleApp 
Hello,World

coutで記載したメッセージがコンソールに出力されます。

記述内容について説明

CMakeLists.txtに記述した内容について説明していきます。

CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(sampleApp CXX)
add_executable(sampleApp sampleApp.cpp)
  1. cmake_minimum_required
    • CMakeのバージョンを指定。
    • 今回はVERSION 3.1を指定しています。
  2. project
    • プロジェクト名とプロジェクトで使用するプログラム言語を指定。
    • プロジェクト名sampleAppとし、C++を指定しています。
  3. add_executable
    • ビルドする実行ファイル名とそれを構成するソースファイルを指定。
    • 実行ファイル名sampleAppとしてます。
    • 構成するソースファイルはsampleApp.cpp一つになります。
    • 複数のソースファイルからビルドする場合は、add_executableの内容を以下にします。
      CMakeLists.txt
      add_executable(sampleApp sampleApp1.cpp sampleApp2.cpp)
      

ConfigureとGenerate

この項目ではビルドする際に打ったコマンドについて説明したいと思います。

mkdir build
cd build
cmake ..
cmake --build .

CMakeのビルドでは、ConfigureGenerateという2つの作業をします。
コマンドで説明すると3行目のcmake ..になります。

Configureは、CMakeLists.txtをCMakeに実行させてビルドに必要な情報を収集する作業をします。
Generateは、Configureで集めた情報を基に自分の開発環境に合わせたプロジェクトファイルの生成をします。

3行目のcmake ..では、CMakeLists.txtを置いたディレクトリを..で指定し、Configureを実施します。
CMakeLists.txtの記載に問題があれば、ここでエラーが出ます。
Configure実施後、収集した情報からGenerateし、プロジェクトファイルを生成します。

このConfigureとGenerateで、いくつかの中間ファイルとプロジェクトファイルが生成されるので、ディレクトリ内が汚れてしまいます。
そのために1, 2行目で作業ディレクトリを作っています。

4行目のcmake --build .について、.は作業ディレクトリを指定します。
作業ディレクトリは、ConfigureとGenerateで生成した中間ファイルとプロジェクトファイルのあるディレクトリになります。
ここではbuildディレクトリになります。

また、裏でmakeコマンドを起動しているので、makeでもビルドできます。

最後に

以上で終了です。
ご参考になれば幸いです。

関連記事

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3