Next: , Up: The GNU Build System


2.1 Automake

makeの偏在とは,Makefileはソフトウェアの自動的なビルド ルールを配布するほとんど唯一の現実的な方法だということを意味しているので すが,すぐにmakeの多くの限界にぶつかります.それには,自動的な 依存性の追跡に対するサポート,サブディレクトリでの再帰的なビルド,(例え ば,ネットワークファイルシステムに対する)信頼できるタイムスタンプなどが 足りないので,開発者はそれぞれのプロジェクトに対し,辛い(そして間違うこ とが多い)車輪の再開発が必要になっています.多くのシステムの makeの癖のために,移植性は些細な問題ではなくなっています.なに よりも,ユーザが期待する多くの標準的なターゲット(make installmake distcleanmake 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のビルドなどをサポートします.makehello プログラムをビルドし,make installでそれを/usr/local/bin (または/usr/localでないときはconfigureで与えたプレフィ クス)にインストールします.

Automakeの利点は,パッケージが大きければ大きい(特にサブディレクトリがあ るもの)ほど有利になりますが,小さなプログラムに対しても重要な利便性と移 植性を追加します.そして,それだけがすべてではありません...