autotoolsとは

autotoolsの概要

autotoolsとは、コンパイル実行環境(OS、コンパイラ、ライブラリなどの依存関係)を自動的に検出して、ソースコードのコンパイルからインストールまでの工程を自動化するツール群です。
UNIX系OSにおいてオープンソースのソフトウェアパッケージの開発及び配布方法として用いられています。

autotoolsを利用して作成されたパッケージは、ソースコードを展開した後、以下の3つのコマンドを実行することでコンパイルからインストールまで完了することができます。


# ./configure
# make
# make install

autotoolsの構成

autotoolsは主に「autoconf / automake / libtool」という3つのツールで構成されます。


autoconfとは

autoconfは、開発環境の定義を記述したファイル「configure.ac」から「configure」スクリプトを生成するためのツールです。

autoconf-2.13の頃では「configure.in」からconfigureスクリプトを作成していましたが、autoconf-2.57くらいから「configure.in」よりも「configure.ac」が推奨されています。


automakeとは

automakeは、「Makefile.am」ファイルからMakefileのテンプレートとなる「Makefile.in」ファイルを生成するツールです。

Makefile.amファイルには、プログラムとソースコードの関係などを記述します。


libtoolとは

libtoolは、システムに依存するライブラリを自動で構築するためのツールです。

各種ライブラリを生成する手順におけるプラットホームへの依存性を隠蔽することができます。


configureスクリプトについて

configureスクリプトは、テンプレートである「Makefile.in」ファイルを参照して、GNU Makefile標準に準拠したMakefileを作成します。


autotoolsによる環境構築

ここでは概要についての説明を記述します。
(ページ下部の「autotools実行サンプル」で環境構築の実行サンプルを記述していますので参照ください。)


autotoolsによるプロジェクト作成作業の全体像は以下の通りです。

  1. makefile.amの作成/編集をする。
  2. configure.acを作成/編集をする。
  3. autoheaderコマンドを実行する。(プリプロセッサ用ヘッダファイル雛形の生成)
  4. aclocalコマンドを実行する。(automake用m4マクロの生成)
  5. automakeコマンドを実行する。(makefile.inの生成)
  6. autoconfコマンドを実行する。(configureスクリプトの生成)

(1)Makefile.amを作成/編集する。

プロジェクトの対象ディレクトリ(サブディレクトリを含む)にMakefile.amを作成します。
autoscanコマンドを実行する前にMakefile.amを作成しておくことで、configure.scanファイルに生成するMakefileのパスなどを自動設定することができます。

Makefile.amの作成と編集のやり方については、詳細は以下のページをを参照してください。


(2)configure.acを作成/編集する。

autoscanコマンドを実行すると、「configure.scan」ファイルが生成されます。

「configure.scan」を「configure.ac」に名前を変更します。


$ autoscan
$ mv configure.scan configure.ac

その後、configure.acにプロジェクト用の設定を記述します。
詳細は以下のページをを参照してください。


(3)autoheaderコマンドを実行する

autoheaderコマンドを実行することで、プリプロセッサマクロ用ヘッダファイルのテンプレート「config.h.in」を生成します。


$ autoheader

(4)aclocalコマンドを実行する。

aclocalコマンドを実行することで、automake用のマクロファイル「aclocal.m4」を生成します。

aclocalコマンドはacinclude.m4などの情報からaclocal.m4を生成します。


$ aclocal

(5)automakeの実行

makefile.amを入力ファイルとしてmakefile.inの雛形を生成します

「--add-missing」オプションを指定すると、「install-sh」や「mkinstalldirs」など必要になるファイルをautomakeが自動で作成します。

また、コマンド実行前に、「COPYING」などのautomakeが要求するファイル・ディレクトリを用意しておきます。


$ touch INSTALL NEWS README COPYING AUTHORS ChangeLog
$ automake --add-missing --copy

(6)autoconfを実行する。

autoconfを実行することで、configure.inからconfigureスクリプトを生成します。


$ autoconf

libtoolの利用

libtoolを利用してライブラリを作成する場合のプロジェクト作成作業の全体像は以下の通りです。
aclocalコマンドを実行する前に、設定とlibtoolizeコマンドの実行を行います。

  1. makefile.amの作成/編集をする。
  2. configure.acを作成/編集をする。
  3. autoheaderコマンドを実行する。(プリプロセッサ用ヘッダファイル雛形の生成)
  4. ★libtoolizeコマンドを実行する。
  5. aclocalコマンドを実行する。(automake用m4マクロの生成)
  6. automakeコマンドを実行する。(makefile.inの生成)
  7. autoconfコマンドを実行する。(configureスクリプトの生成)

libtool用の設定

libtoolizeコマンドを実行する前に、configure.acに以下を追加します。
これでlibtoolを使用することを明示化します。


AM_PROG_LIBTOOL

libtoolizeコマンドの実行

libtoolコマンドの実行すると、config.guess,config.sub,ltconfig,ltmain.sh,ltcf-c.shなどのファイルが生成されます。


$ libtoolize --force

aclocalコマンド実行後にlibtoolizeコマンドを実行すると、再度aclocalコマンドを実行するように警告されることがあります。
その場合にはaclocalコマンドを実行してください。

【備考:Linux向け】
libtoolizeではなく「glibtoolize」を利用する場合には以下の通りです。
Linuxディストリビューションによっては、パッケージ管理ツールでlibtoolizeが見つかないことがあります。
その場合にはglibtoolizeコマンドを取得して、実行します。


$ glibtoolize --force

autotoolsのmakeコマンド

autotoolsによって生成されたMakefileは、デフォルトで以下のコマンドを実行できます。


コマンド 説明
make clean ビルドしたファイルを削除する。
make install プログラム、ライブラリをインストールする。
make dist 配布ファイル (XXX.tar.gz) を作成する。
make distcheck 配布ファイルをテストする。


autotools実行サンプル

autotoolsの実行手順の例を記載します。


関連ページ