Алексей Махоткин

домашняя страница

Automake

Go to the first, previous, next, last section, table of contents.


Классическая программа

GNU hello известен своей классической простотой и многогранностью. В этом разделе показывается, как Automake может быть использован с пакетом GNU Hello. Примеры, приведенные ниже, взяты из последней бета-версии GNU Hello, но убран код, предназначенный только для разработчика пакет, а также сообщения об авторских правах.

Конечно же, GNU Hello использует больше возможностей, чем традиционная двухстрочная программа: GNU Hello работает с разными языками, обрабатывает ключи командной строки, содержит документацию и набор тестов. GNU Hello является глубоким пакетом.

Вот файл `configure.in’ из пакета GNU Hello:

dnl Обработайте этот файл программой autoconf для создания скрипта configure.
AC_INIT(src/hello.c)
AM_INIT_AUTOMAKE(hello, 1.3.11)
AM_CONFIG_HEADER(config.h)

dnl Набор доступных языков.
ALL_LINGUAS=”de fr es ko nl no pl pt sl sv”

dnl Проверка наличия программ.
AC_PROG_CC
AC_ISC_POSIX

dnl Проверка имеющихся библиотек.

dnl Проверка наличия заголовочных файлов.
AC_STDC_HEADERS
AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)

dnl Проверка библиотечных функций.
AC_FUNC_ALLOCA

dnl Проверка наличия поля st_blksize в структуре stat
AC_ST_BLKSIZE

dnl Макросы поддержки различных языков
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; они не будут обсуждаться в этом документе.

В файле `doc/Makefile.am’ мы видим строки:

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)"


Go to the first, previous, next, last section, table of contents.

Comments