GNU helloは,古 典的単純さと融通性で有名です.このセクションでは,AutomakeをGNU Hello パッケージに使用する方法を示します.以下の例は,GNU Helloの最近のベー タバージョンからのものですが,著作権のコメント全体と同様に,管理者専用 のすべてのコードが取り除かれています.
もちろん,GNU Helloは伝統的な二行より幾分長くなっています.GNU Helloは 国際化されていて,オプション処理をして,そしてマニュアルとテストスイー トもあります.
GNU Helloのconfigure.acは以下のようになっています.注意
して下さい: 例にあるAC_INIT
とAM_INIT_AUTOMAKE
の呼出は,
推奨されない構文です.現在の手法は,Public macrosの
AM_INIT_AUTOMAKE
の記述を参照して下さい.
dnl Process this file with autoconf to produce a configure script. AC_INIT(src/hello.c) AM_INIT_AUTOMAKE(hello, 1.3.11) AM_CONFIG_HEADER(config.h) dnl Set of available languages. ALL_LINGUAS="de fr es ko nl no pl pt sl sv" dnl Checks for programs. AC_PROG_CC AC_ISC_POSIX dnl Checks for libraries. dnl Checks for header files. AC_STDC_HEADERS AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h) dnl Checks for library functions. AC_FUNC_ALLOCA dnl Check for st_blksize in struct stat AC_ST_BLKSIZE dnl internationalization macros AM_GNU_GETTEXT AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \ src/Makefile tests/Makefile tests/hello], [chmod +x tests/hello])
`AM_'マクロは,Automake(あるいはGettextライブラリ)によって提供さ れています.残りは標準的なAutoconfマクロです.
最上位のMakefile.amは以下のようになっています.
EXTRA_DIST = BUGS ChangeLog.O SUBDIRS = doc intl po src tests
御覧のように,ここでの仕事はすべてサブディレクトリで実際に実行されます.
poとintlディレクトリは,gettextize
を使用すること
で自動的に生成されます.それらについてはここで述べません.
info_TEXINFOS = hello.texi hello_TEXINFOS = gpl.texi
これで,GNU Helloマニュアルをビルドして,インストールして,そして配布 するには十分です.
tests/Makefile.amは以下のようになっています.
TESTS = hello EXTRA_DIST = hello.in testdata
helloスクリプトは,configure
により生成され,それはテスト
ケースのみで生成されます.make check
でこのテストを実行します.
最後はsrc/Makefile.amで,実際にすべての仕事が行なわれる場所で す.
bin_PROGRAMS = hello hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h hello_LDADD = $(INTLLIBS) $(ALLOCA) localedir = $(datadir)/locale INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"