12.3 GNU autoconf & automake

  4.autoconfとautomakeを用いたMakefileの生成
 下の手順で、touchやemacsしているのは、実際の場面ではテキストエディタなどで編集していることを想定しています。また、[...]の中は、デフォルトで作成されるファイルを示しています。

 下記手順のシナリオは、以下の通りです。
パッケージ名:maxline
バージョン:0.1.0
ソースファイル:maxline.h main.c sgetline.c scopy.c

% mkdir maxline; cd maxline

(必要なスクリプトをコピー ※Cygwinの場合は /usr/autotool/devel/share/automake*/ 等からコピー)
% cp /usr/share/automake/install-sh .
% cp /usr/share/automake/mkinstalldirs .
% cp /usr/share/automake/missing .
% cp /usr/share/automake/depcomp .

(GNU風配布パッケージに必要なファイルを作成。ただし空)
% touch INSTALL NEWS README COPYING AUTHORS ChangeLog
% (maxline.h、main.c, sgetline.c, scopy.cを配置)

(autoscanを実行 ※Cygwinの場合は /usr/autotool/stable/share/bin/autoscan を実行)
% autoscan  [configure.scan]
% mv configure.scan configure.in

(configure.inに最低限のエントリを追加)
% emacs configure.in

(Makefile.amをtouchし、最低限のエントリを追加)
% touch Makefile.am
% emacs Makefile.am

(acconfig.hをtouchし、最低限のエントリを追加)
% touch acconfig.h
% emacs acconfig.h

(ここから下の手順は、上記までのファイルに依存)
% aclocal [aclocal.m4] (macrosディレクトリを使う時は aclocal -I macros)
% autoconf [configure]
% autoheader [config.h.in]
% automake [Makefile.in]
(ここまでが初期段階。この時点でconfigureスクリプトが生成されている)

% ./configure [Makefile, config.h]
% make [maxline]


(ここから開発時のroutine work)

% touch sgetline.c (ソースを編集したと仮定)
% make [sgetline.o maxline]

% touch configure.in (configure.inを編集したと仮定)
% make (aclocal, automake, autoconf, ./configure, autoheaderが起動される)

% touch Makefile.am (Makefile.amを編集したと仮定) 
% make (automakeが起動される)

% touch dummy.c (ソースファイルを追加したと仮定)
% emacs Makefile.am
% make (automake以下の全てが起動され再ビルド)
(ここまで開発時のroutine work)