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 ←生成された実行可能バイナリファイル