Entry

今読んでる本 - 『GNU Make 第3版』

2010年02月01日

この頃,情報技術関連の書籍の中でもさらにマニアックなお勉強本ばかり読んでいるもんで,あまり紹介していなかったりします。そこらの書店で手に入るもんでもないことから,紹介する意味がないと思うもんで。紹介できるほど理解できていないってのもあるんですが。

そんな中,合間にちと読んでる本。今度は一般的すぎて,「ふーん」な感じになってしまうんでしょうけど。

GNU Make 第3版
GNU Make 第3版
posted with amazlet at 10.01.31
Robert Mecklenburg
オライリージャパン
売り上げランキング: 91607
おすすめ度の平均: 5.0
5 どのファイルをコンパイルするかを指定する道具

今時のプログラマさんにとって,make(1) がどれほど「当たり前」の環境として位置づけられているのか知らないんですけれど,一応,make(1) はプログラミング環境の中でも「常識」の位置づけにあったりします。特に,UN*X な環境ではそう。もっとも,今時は Eclipse のような統合開発環境がたくさんあるので,UN*X 環境でも make(1) は過去形になっているのかもしれません。

念のために make(1) について説明しておくと,これはソースコードをビルドするためのバッチスクリプトの処理系です(と言っていいんだと思う)。ソースをビルドするには,ソース間の依存関係を考えてコンパイルしたり,ビルドした後パッケージングしたり,インストールスクリプトを走らせたり,と,かなりの手間なんですね。それでも,ソースが10個や20個くらいなら,まだ手作業でなんとかなる(つらいが)。しかし,100個や1000個とかいった一般的な規模のソースコードを手作業するのは,まず不可能です。これを自動化するコマンドが make です。あらかじめ,ソース間の依存関係や,走らせるコマンドを定義しておいて,いざビルドするときには make と入力するだけで,ビルド作業をすべて自動で行ってくれます。便利ですね。

make にはいろいろな種類があって,Visual Studio だったら nmake,FreeBSD の開発環境だったら pmake なんてのも使われています。その中で,GNU のソフトウェアでよく使われているのは,GNU Make(gmake)。大体,同じような文法で通るんですけれど,GNU の make は,各種方言がたくさんあったりします。本書は,その GNU Make について書かれている。

特筆すべきは,make(1) の使い方(Makefile の書き方)だけでなく,プロジェクトの構成方法や大規模プロジェクトに適用する場合の注意事項のような,make の活用事例(お作法ともいう)について,かなり詳細に解説があること。

ソースコードが数百程度になってくると,ビルドの手間はもちろん,プロジェクト自体の構成方法も無視できない問題になってきます。特に,C/C++ でライブラリの類を作っていると複雑になる。利用者に公開するヘッダはこっちにおいて,ライブラリ内でローカルなヘッダはこっち,ライブラリをモジュールごとに分割している場合は,その依存関係を踏まえないといけないし,共通で使うヘッダやライブラリはここを参照する,外部の製品ライブラリを利用している場合はこのディレクトリに置く……とかいった具合。ソースコードの構成がとても複雑になるんですね。ま,あたしのプロジェクトの作り方が下手だってのもあるんでしょうけど。

本書では,そうした比較的大規模なプロジェクトを,make の視点から効率よく構成する手法を紹介しています。これは非常に参考になります。実のところ,プロジェクトの構成方法について,ちゃんと書かれている本ってのはあまりなかったりします。あたしが知っているところでは,『大規模 C++ ソフトウェアデザイン』が近いけれど,こちらは実装技術が中心で,論理レベルの依存性や絶縁を問題にしている点で,(重要なものの)ちと違う。プロジェクトの構成方法については,IDE を利用している向きにとっても,同じように問題を抱えるはずです。毎度悩む方は,一度参照してみるといいかも。

新装版 大規模C++ソフトウェアデザイン (ADDISON-WESLEY PROFESSIONAL COMPUTI) (ADDISON‐WESLEY PROFESSIONAL COMPUTING SERIES)
ジョン・ラコス
ピアソンエデュケーション
売り上げランキング: 374606

本書を一通り読んで実際に Makefile を作れば,ビルド環境の基本については心配なくなるはず。どうも,ネット上の make を解説したサイトも,本書を参照しているところがあるようなので,どうせだったらモト本を読んだ方がいいのかもしれません。

make って,ビルド環境を構築するのに使われるのが普通だけれども,単体テストを自動化したり,バージョン管理の補助ツールとして利用したりと,いろいろな使い道があったりします。本書にその紹介はないけれど,工夫次第でいろいろなことができることは分かるはず。基本書としておすすめ。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN