新しいビルド方法 CMakeでHelloWorld

プログラミングC++

C言語が誕生したとき、ほぼ同時にmakeが生まれたようです。

ビルドを自動化するための試みはmakeで終わることなく、続けられた努力は、Autotools (autoconf+automake+libtool)で完成されました。

しかし、洗練されたその方法は一部のエンジニアしか触れない難しいものになってしまっているようです。Makefileは触れるけどMakefile.amは触れないエンジニアを見てきました。数十人規模のエンジニアでautogen.shからcongiure.acとMakefile.amを作れるのが私だけだったときもあります。

何となくなとっつきにくさか、Autotoolsに代わるビルドシステムはいくつも提案されています。

  • CMake
  • Meson
  • Ninja
  • Premake
  • GYP
  • SCons
  • Waf
  • cargo

どのビルドシステムがデファクトスタンダードになるかは分かりません。もしかしたら永遠にAutotoolsがデファクトなのかもしれません。

今回はCMakeでHelloWorldをやってみます。今回はWSLかLinuxが前提です。

CMake

CMakeはLinux上でmakeを使い、macOS上でXcodeを使い、Windows上ではVisual Studioを使います。どのプラットフォームでも使えるビルドシステムです。

多くの著名なプロジェクトのビルドシステムとして活躍しています。

環境

WSLかLinuxを前提で話を進めます。自宅にVisual Studioを入れていないのですみません。

WSLの入れ方は以下にあります。

>>> お手軽なLinux環境 WSL Windows上のLinuxのインストールとファイル連携

cmakeはaptで簡単にいれることができます。

$ sudo apt install cmake

CMakeLists.txtでHelloWorld

CMakeのマニュアル、チュートリアルは後でゆっくり読むことにしましょう。

makeのMakefileに相当するのがCMakeLists.txtとなります。HelloWorldに必要なのは3行だけです。

cmake_minimum_required(VERSION 3.16.3)
project(HelloWorld CXX)
add_executable(helloworld hello.cpp)

それぞれの行を説明します。

cmake_minimum_required(VERSION 3.16.3)

cmakeの最低バージョンを書きます。普通、今使っているcmakeのバージョンですね。

以下を実行して、cmakeのバージョンを指定してください。

$ cmake --version

project(HelloWorld CXX)

プロジェクト名と言語を宣言します。プロジェクト名はHelloWorldで言語はC++です。C++はCXXと宣言します。

add_executable(HelloWorld hello.cpp)

add_executableで実行形式のビルドルールを指定します。

ここでは、HelloWorldという実行形式で、ソースファイルはhello.cppだけです。

ビルド方法

上記のようにあるディレクトリにhello.cppとCMakeLists.txtがある状況を考えます。

CMakeList.txtは上記の3行だけとしましょう。

また、ビルドにoutというディレクトリを使用することにします。

※ビルドするためのディレクトリを作るのが慣例ですので作っておきましょう。

以下で、buildするための前準備が整いました。

$ mkdir out
$ cd out
$ cmake ..

CMakeLists.txtを書き直した時などは、outに下りてcmake ..を再実行してください。

いよいよビルドです。以下でビルドできます。out/HelloWorldがターゲットの実行ファイルになります。

$ cd ..
$ cmake --build out

普段の作業では「ソースを修正してcmake –build out」を繰り返すことになります。

まとめ

CMakeでHelloWorldをやってみました。

>>> 今日を生き抜くプログラミングの知識 言語によらない共通のもの

>>> 今日を生き抜くプログラミングの知識 C++の知識

>>> いろいろなプログラミング言語のHelloWorld Windows上の環境構築

コメント

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました