ビルドツールの比較検討CmakeとSconsとBazelと。。。

2020/02/28

BAZEL C/C++ Googleサービス Linux RandomGrid Ubuntu 技術

t f B! P L

そろそろmakeには疲れました

C/C++で書いたプログラムを実際に動くソフトウェアとしてコンパイル→リンクすることを、ビルドといいます。

当然このビルドって結構手間のかかる作業で、書いたソースファイルを一つ一つコンパイルして、できたオブジェクトファイルを依存関係を考慮しながらリンクして、そしてそれぞれの手順の中でもあっちのライブラリを取ってくる、こっちのライブラリをリンクする…

とてもじゃないけど手動ではやっていられません。

なので旧来からC/C++開発をやっている人間は、概ねmakeというツールを使用してビルドを行います。

ただねぇ、、、これねぇ、、、
書きにくいんですよ、Makefileが。

スペースとタブがいちいちここに入らないといけない入っちゃいけない、記載のルールも関数型言語チックで直感的に解りにくい、依存関係も自分で記載しなきゃいけない。。。

IDE使うという手も有るのですが、開発環境が流動的になる想定がある現状それを一つに絞り込むのも難しい。

ということで、makeに変わるビルドツールに関する調査と検討を行いました。

候補

今回選定の候補となっているのが以下の3つです。
正直テストに使用する単体テストフレームワークとの親和性で行けばBAZELなのかな、とも思っているのですが、他の2ツールのルールの書きやすさも捨てがたい。

何しろ私一人で開発しているわけではないので、メンバーが理解できる形でビルドルールを記載できることは絶対条件になってきます。

そういう意味でもmakeはねぇな、、、ってなったわけですが。。。


CMake Kitware社製ビルダー、比較的オーソドックスなテキストファイルでルールを記載するため、ソフトウェア開発経験が浅くても作りやすい、サブフォルダにそれぞれビルドルールファイルを作っておかないといけないことはネック

BAZEL Google社製ビルダー、GoogleTestとの親和性は最も高いと思われる最後発ビルダーだが発展途上のきらいも若干見え隠れする

SCons Steven Knight氏製ビルダー、ビルドスクリプトがPythonのため、古くからLinux使っている人だと分かりやすい

インストール

検討資料兼マニュアルにするので、このあたりの手順から全部書いていきます。

ちなみにCMakeとSConsは先発である分、apt-getで(Linuxに馴染みのない方でも)あっさりインストールできるのは楽ですね。

CMake

sudo apt-get install scons


BAZEL

curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel

SCons

sudo apt-get install scons

とりあえず今回はインストールまで、
仮設サーバの設営も終わったし、Jenkinsも息を吹き返したので、CIツールの動作環境検証は今後行っていきます。

それに伴いこれらの調査に関しても出せるノウハウは都度記載していきたいと思います。

Translate

ページビューの合計

注意書き

基本的にごった煮ブログですので、カテゴリから記事を参照していただけると読みやすいかと存じます。

ADBlocker等を使用していると、Twitterやアクセスカウンタが表示されません。

記事を読むには差し支えませんが、情報を参照したい場合には一時例外にしていただけると全てご参照いただけます。

Featured Post

ボイドラDICEの攻略法

QooQ