The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
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



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру