Autotoolsとは
Autotoolsは、主に
[Unix系]]オペレーティングシステム]で[[ソフトウェアパッケージの開発を効率化するためのツール群であり、フレームワークです。このツール群を使用することで、多様な
UNIX互換環境への
ソフトウェアパッケージの対応が容易になります。特に、異なるOSや環境間で
ソフトウェアを移植する際の煩雑さを軽減し、開発者がより本質的な作業に集中できるよう支援します。
Autotoolsの構成
Autotoolsは主に以下の3つのツールから構成されています。
autoconf: ビルド環境設定スクリプト(configure)を自動生成するツールです。
automake: Makefile.inファイルを自動生成するツールです。
libtool: 共有ライブラリの作成と管理を支援するツールです。
これらのツールを組み合わせることで、ソフトウェアのビルドプロセスを自動化し、移植性を高めることができます。
パッケージ利用者から見たAutotools
Autotoolsを用いて作成されたパッケージは、利用者が容易にインストールできるよう設計されています。一般的に、ソースコードを展開した後、以下のコマンドを実行するだけで、インストールまでの一連の作業が完了します。
bash
./configure
make
make install
多くのUNIX用オープンソースソフトウェアでこの方式が採用されており、ソフトウェアの導入を簡略化しています。
各ツールの詳細
configure
configureは、ソフトウェアのビルド環境を構築するためのシェルスクリプトです。プログラムのビルドには複数のツールが連携して動作しますが、その際、ビルド設定(例えば、拡張命令フラグなど)を外部から取り込み、すべてのツール間で一貫して適用する必要があります。configureはこの作業を自動化し、利用者が手動で行うことによる時間浪費やバグ発生のリスクを軽減します。
configureの特徴
自動化: ビルド環境構築を自動化し、利用者はconfigureを実行するだけで環境が整います。
標準コマンド: configureおよび関連スクリプトは標準的なUNIXコマンドのみを使用しており、特別なソフトウェアのインストールは不要です(ただし、Windows環境ではUNIX互換環境が必要)。
カスタマイズ: 環境変数やコマンド引数で動作を調整でき、柔軟な設定が可能です。
configureの主なオプション
`--prefix=dir`: インストール先ディレクトリを変更します。
`--with-hoge`: 別のパッケージhogeを使用することを指定します。
環境変数 `CC`: Cコンパイラのコマンド名を指定します。
これらのオプション以外にも、多数の設定項目があり、利用者の環境に合わせて詳細な設定が可能です。
autoconf
autoconfは、configureスクリプトを自動生成するツールです。手動でconfigureスクリプトを作成・維持するには多くの手間とバグのリスクが伴いますが、autoconfを使用することでこの問題を解決します。autoconfは、`configure.ac`(または古いバージョンでは`configure.in`)を入力として、`configure`スクリプトを出力します。
autoconfの特徴
移植性: 機能ベースで移植性を評価するため、未知の環境やカスタマイズされた環境にも対応しやすいです。
自動生成: `configure.ac`を基に、数千行にも及ぶ`configure`スクリプトを自動生成します。
カスタマイズ性: `configure.ac`で必要な機能を記述することで、柔軟な設定が可能です。
configure.acの例
AC_INIT(hello, 1.9, address) # 必須設定
AC_CONFIG_SRCDIR([hello.c])
このパッケージではhogeを使用可能である configureに--with-hogeが追加される。
(実際には、この後に利用者が--with-hoge=yesとした場合の動作定義を記述する必要がある)
AC_ARG_WITH(hoge, [Use hoge])
AC_PROG_CC # C
コンパイラの設定 configureが環境変数CCを使用する
AC_OUTPUT([Makefile]) # Makefile.inを雛形にしてMakefileを生成
automake
automakeは、Makefile.inファイルを自動生成するツールです。`Makefile.am`ファイルを入力として、`Makefile.in`を出力します。これにより、ビルドプロセスの記述を簡略化し、効率的な開発を支援します。
automakeの利用例
例えば、HelloWorldプログラムの場合、`Makefile.am`は以下のようになります。
Makefile.am
実行バイナリファイルの名前はhello
bin_PROGRAMS = hello
helloのソースコードはhello.c,hello.h
hello_SOURCES = hello.c hello.h
この`Makefile.am`を基に`Makefile.in`が生成され、`configure`を実行することで`Makefile`が生成されます。`make`コマンドを使用することで、
ソースコードのコンパイルから
実行ファイルの生成、
インストールまでが自動化されます。
まとめ
Autotoolsは、
ソフトウェア開発におけるビルドプロセスの自動化と移植性の向上に貢献する強力なツール群です。`autoconf`、`automake`、`libtool`を組み合わせることで、複雑なビルド設定を効率的に管理し、開発者はより本質的な開発作業に集中することができます。特に、オープンソース
ソフトウェアの開発現場で広く活用されており、その利便性と効率性が高く評価されています。
関連項目
ビルド (ソフトウェア)
Gnits Standards
GNU Coding Standards
CMake
Meson
Apache Ant
Apache Maven
Waf
SCons
参考文献
『GNU Autoconf/Automake/Libtool』 Gary V. Vaughan, Ben Elliston, Tom Tromey, Ian Lance Taylor著 でびあんぐる監訳 ISBN 4-274-06411-5
外部リンク
GNU Autoconf, Automake and Libtool (英語)
GNU Autoconf home page (英語)
GNU Autoconf macro archive (英語)
Learning the GNU development tools @sourceforge (英語)
Autotoolset home page (英語)
Autotools Tutorial by Alexandre Duret-Lutz (英語)