次: Libtool, 上: The GNU Build System
makeの偏在とは,Makefileはソフトウェアの自動的なビルド
ルールを配布するほとんど唯一の現実的な方法だということを意味しているので
すが,すぐにmakeの多くの限界にぶつかります.それには,自動的な
依存性の追跡に対するサポート,サブディレクトリでの再帰的なビルド,(例え
ば,ネットワークファイルシステムに対する)信頼できるタイムスタンプなどが
足りないので,開発者はそれぞれのプロジェクトに対し,辛い(そして間違うこ
とが多い)車輪の再開発が必要になっています.多くのシステムの
makeの癖のために,移植性は些細な問題ではなくなっています.なに
よりも,ユーザが期待する多くの標準的なターゲット(make install
,
make distclean
,make uninstall
など)を手作業で実装する必要
があることがあげられます.もちろん,Autoconfを使用しているので,
@CC@
,@CFLAGS@
,そしてconfigureで提供される
その他の置換式を認識するように,Makefile.in
に対応するコードを挿入
しているでしょう.この乱雑な状況はAutomakeで処理しましょう.
Automakeは,プレーンのMakefile
の方法と比較して,非常に簡単でより
強力な構文で,ビルドが必要とするものをMakefile.am
ファイルで指定す
ることを可能とし,Autoconfで使用するための移植性の高いMakefile.in
を生成します.例えば,単純な“Hello world”プログラムをビルドしインストー
ルするためのMakefile.am
は以下のようになります.
bin_PROGRAMS = hello hello_SOURCES = hello.c
結果として得られるMakefile.in
(約400行)は,自動的に,すべての標準
的なターゲット,Autoconfが提供する置換式,自動的な依存性追跡,
VPATH
のビルドなどをサポートします.makeでhello
プログラムをビルドし,make install
でそれを/usr/local/bin
(または/usr/localでないときはconfigureで与えたプレフィ
クス)にインストールします.
Automakeの利点は,パッケージが大きければ大きい(特にサブディレクトリがあ るもの)ほど有利になりますが,小さなプログラムに対しても重要な利便性と移 植性を追加します.そして,それだけがすべてではありません....