next up previous contents
Next: Создание файла `Makefile.in' Up: Примеры Previous: Простой пример (от начала   Contents

Классический ``Hello, world''

GNU hello <ftp://ftp.gnu.org/pub/gnu/hello/hello-1.3.tar.gz> известен своей классической простотой и многогранностью. В этом разделе показывается, как Automake может быть использован с пакетом GNU Hello. Примеры, приведенные ниже, взяты из последней бета-версии GNU Hello, но убран код, предназначенный только для разработчика пакета, а также сообщения об авторских правах.

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

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

## Обработайте этот файл autoconf для получения ## скрипта configure. AC_INIT(src/hello.c) AM_INIT_Automake(hello, 1.3.11) AM_CONFIG_HEADER(config.h) ## Установка доступных языков. ALL_LINGUAS="de fr es ko nl no pl pt sl sv" ## Проверка наличия программ. AC_PROG_CC AC_ISC_POSIX ## Проверка библиотек. ## Проверка заголовочных файлов. AC_STDC_HEADERS AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h) ## Проверка библиотечных функций. AC_FUNC_ALLOCA ## Проверка st_blksize в структуре stat AC_ST_BLKSIZE ## макрос интернационализации 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)"



2004-06-22