Создание конфигурационных скриптов

Создание конфигурационных скриптов [Вперед] [Вверх] [Назад] [Содержание]
Дальше: Структура и основные принципы Вверх: Использование 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