| |
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)"
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |