Создание конфигурационных скриптов
Дальше: Структура и основные принципы Вверх: Использование Autoconf Назад: Что такое Autoconf
Создание конфигурационных скриптов
По соглашению, главный (чаще всего единственный) создаваемый скрипт называется configure. В процессе работы он создает несколько файлов:
- один или более Makefile-файлов, по одному для каждой поддиректории, содержащей исходный код;
- возможно, заголовочный файл, обычно называющийся config.h и содержащий директивы C-препроцессора, сигнализирующие о результатах некоторых тестов (о его использовании см. ниже);
- скрипт config.status, которыи регенерирует все файлы из этого списка;
- скрипт config.cache, сохраняющий результаты запуска тестов;
- файл config.log, содержащий все сообщения, выдаваемые конпиляторами, и помогающий в отладке в случае каких-либо ошибок.
Для создания скрипта configure необходимо создать файл configure.in в главной директории проекта, а затем запустить программу autoconf. Если вы используете какие-либо собственные Autoconf-тесты, то по соглашению они обычно содержатся в файлах aclocal.m4 и acsite.m4. Если вы хотите использовать заголовочный файл config.h, то необходимо также создать специальный заголовочный файл acconfig.h и файл config.h.in (последний создается автоматически).
Примерная последовательность действий по созданию/конфигурации/компиляции программы с использованием Autoconf выглядит так:
- запуск программы autoscan для создания первоначального варианта файла
configure.in; - изменение и/или дополнение этого файла с учетом каких-либо специальных требований;
- при необходимости, создание дополнительных нестандартных тестов и размещение их в файлах aclocal.m4 и acsite.m4;
- запуск программы autoconf для генераци скрипта configure;
- (при использовании заголовочного файла config.h) запуск программы autoheader для создание файла config.h.in из acconfig.h;
- создание шаблонов Makefile-файлов Makefile.in в каждой директории проекта;
- запуск скрипта configure, генерация Makefile-файлов, (при использовании заголовочного файла config.h) генерация config.h;
- запуск make.
При создании первоначального варианта файла configure.in используется программа autoscan. Она читает исходные тексты в указанной директории и ищет в них элементы кода, которые потенциально могут создавать проблемы переносимости. Такими элементами могут служить, например, наличие либо наоборот отсуствие каких-либо заголовочных файлов, различия в обьявлениях фунцкий, состав и порядок выполнения каких-либо системно-зависимых операций и т.п. Определение происходит эвристически, т.е. не гарантируется, что после того, как программа будет настроена с помощью configure, все неприятности исчезнут сами собой -- какие-то важные моменты autoscan может пропустить, а какие-либо тесты могут оказаться лишними. Поэтому первоначальный автоматически созданный таким способом файл configure.scan неразумно будет использовать без изменений, просто переименовав его в configure.in. В процессе запусков configure на разных системах программист, обнаруживая какие-либо проблемы, модифицирует конфигурационные скрипты, вставляя в них новые тесты, достигая таким образом все большей и большей переносимости.
Dmitry A. Antipov
1999-05-26