| |
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-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |