KAGURAを支える技術① CMake
クロスプラットフォーム
KAGURAはWindows版とMac版があり、同時に開発されています。 開発チームはとても小規模なので、効率的に開発を進める必要があります。 言語は主にC++です。
WindowsでもMacでも動くビルド環境を作ろうとした場合、1つはGCCとmakeのようなUnix系のツールを使う方法が考えられます。WindowsではMinGWというGCCの移植版、MacではXcodeのCommand Line Toolsをインストールすれば、これらのツールが使えます。
しかし、僕の経験上、OS固有の機能や新しい機能を使ったり、デバイスをできるだけ低レベルで扱いたい場合、OSの開発元が提供するツールを使うのが無難であることが多いのです。 比較の結果、KAGURAの特性上、Visual StudioおよびXcodeに軍配が上がります。ところが、この方法ではVisual Studio、Xcodeそれぞれでプロジェクトを作る必要があります。ソースコードを追加したり削除したり、コンパイルの設定を変えたりする度に、両方のプロジェクトファイルを変更するのは辛いものです。C++のソースコードが増えれば増えるほど、プロジェクトファイルの管理は面倒になります。1カ所設定を変更すれば、Windows環境でもMac環境でも変更されてほしい!そこで役に立つのがCMakeです。
他のmake代替ツールであるSConsやRakeなどと異なり、CMakeはビルド設定ファイルから直接ビルドするのではなく、各ビルド環境用のプロジェクトファイルを作るのが仕事で、実際のビルドはVisual StudioやXcodeが行います。このため、ビルド設定ファイルは共通でありながら、それぞれのプラットフォームの強力なツールのメリットを生かすことができるのです。
CMakeの使い方
何か適当なC++のコード(main.cpp)があるとします。
#include <iostream> int main() { std::cout << "Hello" << std::endl; return 0; }
これをビルドするための最小の設定ファイルはこんな感じ。CMakeLists.txtという名前のテキストファイルを作成します。
project(hello) add_executable(hello main.cpp)
CMakeを起動し、ソースコードのディレクトリ(CMakeLists.txtのある場所)とビルドディレクトリを指定し、「Configure」ボタンを押します。 ビルドに使用するツール(Visual Studio、Xcodeなど)を選択します。 「Generate」ボタンを押します。 Visual Studioのソリューション(.sln)ができるので、開いてビルドしたら・・・ ビルド完了です。