Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Система конфигурирования и сборки GNU

Система конфигурирования и сборки GNU

Иан Ланс Тейлор

Файлы

Как было видно из предыдущей главы, система конфигурирования и сборки GNU использует несколько различных файлов. Разработчик должен написать некоторые из этих файлов. Остальные будут сгенерированы с помощью различных утилит.

Эта система очень гибка и может быть использована многими различными способами. В описании используемых в ней файлов я буду придерживаться общего способа и упоминать другие способы, которые могут понадобиться.

Девелоперские файлы

Этот раздел описывает файлы, которые пишутся или генерируются разработчиком программного пакета.

Схема девелоперских файлов

На этой схеме изображены файлы, которые пишутся разработчиком, генерируемые файлы, которые должны включаться в полный дистрибутив исходного кода, и утилиты, которые создают эти файлы. В прямоугольниках без закруглений вписаны имена файлов, а в прямоугольниках с закруглёнными углами — имена утилит. Например, `autoheader' — это имя утилиты, а не имя файла.

Схема девелоперских файлов

Разрабатываемые девелоперские файлы

Следующие файлы должны быть написаны разработчиком:

`configure.in'
Это — конфигурирующий скрипт. Этот скрипт содержит вызовы макросов autoconf. Кроме того он может содержать обычный код шелл-скрипта. Этот файл предназначен содержать тесты функциональных возможностей для задач портирования. Последнее, что обычно пишут в этом файле, — это макрос `AC_OUTPUT', перечисляющий файлы, которые надо создать, когда сборщик запустит скрипт configure. Этот файл обязательно нужен при использовании системы конфигурирования GNU. Смотрите раздел Написание configure.in.
`Makefile.am'
Это — входной файл для automake. Он описывает, как должен собираться код. Он содержит определения переменных automake. Также он может содержать обычные цели Makefile. Этот файл нужен только при использовании automake (новые утилиты обычно используют automake, но до сих пор существуют старые утилиты, которые не были конвертированы, и для которых разработчики вручную пишут `Makefile.in'). Смотрите раздел Написание Makefile.am.
`acconfig.h'
Когда скрипт конфигурирования создает портируемый заголовочный файл согласно `AM_CONFIG_HEADER' (или, если automake не используется, `AC_CONFIG_HEADER'), этот файл используется для описания макросов, которые не распознаются командой `autoheader'. Обычно это совершенно безинтересный файл, содержащий набор строк `#undef' с комментариями. Как правило, каждый вызов `AC_DEFINE' в `configure.in' будет требовать строки в этом файле. Смотрите раздел Написание acconfig.h.
`acinclude.m4'
Наличие этого файла необязательно. Он определяет локальные макросы для autoconf. Эти макросы могут затем использоваться в `configure.in'. Если вам ненужны локальные макросы autoconf, то вам ненужен и этот файл. В общем и целом, вам никогда не понадобятся локальные макросы autoconf, поскольку всё необходимое вы можете положить непосредственно в `configure.in'. Но иногда локальные макросы все же удобны.
Новые утилиты могут не иметь `acinclude.m4' и использовать вместо него поддиректорию, обычно называемую `m4', для хранения макроопределений. Эта поддиректория объявляется в `Makefile.am' как `ACLOCAL_AMFLAGS = -I m4', чтобы заставить `aclocal' искать в ней макроопределения. Эти макроопределения описаны в отдельных файлах этой директории.
Файл `acinclude.m4' нужен только при использовании automake. В старых утилитах разработчики сами писали `aclocal.m4', если это было необходимо.

Генерируемые девелоперские файлы

Следующие файлы должны быть сгенерированы разработчиком.

При использовании automake эти файлы, как правило, генерируются вручную только первый раз. Вместе с ними генерируются `Makefile'-ы, содержащие правила автоматической пересборки необходимых файлов. Если в `configure.in' используется `AM_MAINTAINER_MODE' (обычный случай для кода Cygnus), правила автоматической пересборки будут определяться только в том случае, если ваш configure используется с опцией `--enable-maintainer-mode'.

Когда используется автоматическая пересборка, важно убедиться в том, что все нужные утилиты собраны и инсталлированы в ваш `PATH'. Использование именно автоматической пересборки строго рекомендуется до такой степени, что я даже не стану объяснять, что у вас получится, если вы не будете ее использовать.

`configure'
Это — скрипт конфигурирования, который будет запускаться при сборке пакета. Он генерируется с помощью `autoconf' из `configure.in' и `aclocal.m4'. Представляет собой шелл-скрипт.
`Makefile.in'
Это — файл, который скрипт конфигурирования будет заменять во время сборки на `Makefile'. Этот файл генерируется `automake' из `Makefile.am'. Если вы не используете automake, вы должны написать этот файл самостоятельно. Этот файл выглядит как обычный `Makefile' с некоторыми конфигурационными подстановками для определенных переменных.
`aclocal.m4'
Этот файл создается программой `aclocal' на основании содержимого `configure.in' и `acinclude.m4' (или, как замечено выше в описании `acinclude.m4', на основании содержимого поддиректории `m4'). Этот файл содержит определения макросов autoconf, которые `autoconf' будет использовать при генерации файла `configure'. Эти макросы autoconf могут быть определены в вашем `acinclude.m4' или в других пакетах, таких как automake, libtool или gettext. Если вы не используете automake, вам скорее всего придется писать этот файл самостоятельно. А в том случае, когда `configure.in' использует только стандартные макросы autoconf, этот файл вообще ненужен.
`config.in'
Этот файл создается утилитой `autoheader' на основе `acconfig.h' и `configure.in'. Во время сборки скрипт configure определяет в нем некоторые макросы для создания `config.h', который может включаться в вашу программу. Это позволит вашему коду на C использовать условные операторы препроцессора для изменения своего поведения в зависимости от характеристик хозяйской системы. Этот файл может быть назван и как `config.h.in'.
`stamp.h-in'
Этот совершенно безынтересный файл, который я не стал изображать на схеме, генерируется `automake'. Он, очевидно, содержит строку `timestamp'. Он используется как файл отметки времени, указывающий, является ли `config.in' актуальным. Использование файла отметки времени означает, что `config.in' может быть помечен как актуальный без своего постоянного физического изменения. Это полезно постольку, поскольку `config.in' зависит от `configure.in', а последний легко изменить таким способом, который не скажется на `config.in'.

Назад Вперед
Пример Сборочные файлы

Перевод: Дмитрий Скоробогатов, 08.12.2011.
Оригинальный текст можно найти по адресу http://www.airs.com/ian/configure/configure_3.html.


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-12-08 07:25:28

Метки материала: файлы, gnu, система конфигурирования, система конфигурирования и сборки, компиляция, проект gnu, бесплатные программы, бесплатное по, разработка по, soft, программное обеспечение, software, спо, документация для программиста, программное обеспечение по

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.