CMakeを使ったHello World

このページでは、前回のチュートリアルで作成したのとまったく同じプログラムを、CMakeを使ってビルドする方法を紹介します。 具体的には、FLTKを利用するために必要なCMakeListsファイルの最低限の内容とcmakeコマンドの実行方法だけ紹介します。 CMake自体についての詳しい解説は行いません。

前提

FLTKのインストールに従って、FLTK 1.4.3が $HOME/MikanBox 以下にインストールされているものとします。 違う場所にインストールした場合は(そうであっても全く問題ありません)、パスをご自身のものに置き換えてください。

また、CMakeもインストールされている必要があります。

作業ディレクトリの用意

作業ディレクトリは $HOME/code/fltk/hello-fltk-cmake とします。 ここに作成するプログラムのソースコードを保存して、また、ここでビルドを行います。

繰り返しになりますが、こういった名前やパスは、何かしら決めておかないと説明がしづらいので提示しているだけです。 同じ名前にする必要は全くありません。 ご自身の好みの場所に好きな名前で作成してください。

まずディレクトリを作成して、そこに移動しておきます。

$ mkdir -p ~/code/fltk/hello-fltk-cmake
$ cd $_

プログラムのソースコード

プログラムのソースコード前回のHello Worldで使用したものと全く同じです。 作業ディレクトリhello-fltk-cmake直下にmain.cppという名前でコピーを作成しておきます。

CMakeLists.txt

作業ディレクトリhello-fltk-cmakeの直下にCMakeLists.txtという名前のファイルを作成します。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10 FATAL_ERROR)

project(hello-fltk-cmake LANGUAGES CXX)

find_package(FLTK 1.4 REQUIRED CONFIG)

add_executable(hello-fltk-cmake main.cpp)

target_link_libraries(hello-fltk-cmake PRIVATE fltk::fltk)

CMake自体にFLTKのMODULEモードのコンフィギュレーション(FindFLTK.cmake)が同梱されています。 一方、FLTKもCMakeのコンフィギュレーションを提供しています。 なるべくFLTKが提供するものを利用するほうが良いでしょう。 FLTK 1.3まではMODULEモードのコンフィギュレーションが提供されていましたが、FLTK 1.4からCONFIGモードのコンフィギュレーションが提供されています。 上のCMakeLists.txtのように find_package(FLTK 1.4 REQUIRED CONFIG) の1行を含めるだけでFLTKが利用可能になります。 find_packageには多数のオプションが存在していて、細かな調整が可能です。 あまり詳細に踏み込みたくはないので、今回は最低限のオプションのみ指定しました。

ビルドディレクトリの作成

現在の作業ディレクトリhello-fltk-cmakeの中にbuildという名前のディレクトリを作成して、その中に移動します。

$ mkdir build
$ cd build

CMakeコンフィギュレーションの実行

buildディレクトリの中でcmakeコマンドを実行します。

$ cmake .. -DCMAKE_PREFIX_PATH=~/MikanBox

CMAKE_PREFIX_PATHにFLTKをインストールしたパスを設定するのが最大のポイントです。 もし標準的なディレクトリFLTKをインストールしたのであれば不要なオプションです。 しかし、今回のように非標準的な場所にインストールした場合であっても、柔軟かつ簡単に対処できるのはCMakeの強みの一つと言えます。

ビルドの実行

CMakeコンフィギュレーション時に「-G」で指定しなければ、大抵はMakefileが生成されます。 もしかしたらbuild.ninjaやそれ以外のケースがあるかもしれませんので、少し注意して経過を観察してみてください。

Makefileが生成されているのであればmakeを実行します。

$ make

もしbuild.ninjaが生成されているのであればninjaを実行します。

$ ninja

どのビルドツールを実行するのかの判断をCMakeにまかせてしまう場合はcmakeをを実行します。

$ cmake --build .

この場合、カレントディレクトリを意味する「.」を忘れないようにしてください。

結果の確認

ソースコード(hello-fltk-cmake.cpp)に問題がなければ、ビルドに成功して実行可能バイナリファイルが生成されます。

$ ls -l
合計 1664
-rw-rw-r-- 1 freemikan freemikan   12884  5月 23 01:32 CMakeCache.txt
drwxrwxr-x 6 freemikan freemikan    4096  5月 23 01:32 CMakeFiles
-rw-rw-r-- 1 freemikan freemikan    5347  5月 23 01:32 Makefile
-rw-rw-r-- 1 freemikan freemikan    1660  5月 23 01:32 cmake_install.cmake
-rwxrwxr-x 1 freemikan freemikan 1670960  5月 23 01:32 hello-fltk-cmake    ←生成された実行可能バイナリファイル

Hello Worldプログラムの実行

最後に、生成された実行可能バイナリファイルを実行して、プログラムが起動することを確認しておきましょう。

$ ./hello-fltk-cmake

うまく行けばウィンドウが表示されます。

Hello FLTK

文書の編集
文書の先頭へ