autoconf
Инструмент для автоматической генерации скриптов конфигурации, которые адаптируют исходный код программного обеспечения к различным Unix-подобным системам. Он позволяет разработчикам создавать переносимые и настраиваемые пакеты исходного кода, автоматически определяя характеристики целевой системы и настраивая параметры сборки соответствующим образом. Autoconf является частью GNU Build System и широко используется в open-source проектах для упрощения процесса компиляции на различных платформах.
Особенности
- автоматическое определение наличия библиотек, заголовочных файлов и функций на целевой системе;
- создание переносимых скриптов конфигурации, работающих на различных Unix-подобных системах;
- поддержка создания кроссплатформенных Makefile через интеграцию с automake;
- расширяемость с помощью макросов M4 для пользовательских проверок;
- генерация заголовочных файлов с параметрами конфигурации.
Основные компоненты
Инструментарий autoconf состоит из нескольких взаимосвязанных программ, которые работают вместе для создания системы сборки (подробнее с документацией можно ознакомиться здесь):
Основные исполняемые программы
Основные утилиты autoconf предоставляют функционал для различных этапов настройки системы сборки:
- autoconf — генерирует скрипт
configureиз файлаconfigure.acс использованием макросов M4; - autoheader — создает файл
config.h.inс шаблонами для#defineдиректив, которые затем заполняются скриптомconfigure; - autom4te — кэширующий процессор для M4, используемый autoconf для ускорения обработки макросов;
- autoreconf — автоматически запускает
autoconf,autoheader,aclocal,automake,libtoolizeи другие необходимые инструменты в правильном порядке; - autoscan — анализирует исходный код и помогает создать начальный вариант файла
configure.ac; - ifnames — извлекает и показывает, какие символы
#ifdefиспользуются в исходном коде программы.
Вспомогательные инструменты и макросы
Autoconf тесно интегрируется с другими инструментами GNU Build System:
- aclocal — собирает макросы M4, необходимые для работы autoconf, в один файл
aclocal.m4; - automake — создает
Makefile.inизMakefile.am(часто используется вместе с autoconf); - libtool — управляет созданием статических и shared библиотек на различных платформах;
- pkg-config — используется для получения флагов компиляции и линковки для установленных библиотек.
Стандартные макросы проверок
Autoconf предоставляет обширный набор предопределенных макросов для проверки различных аспектов системы:
- AC_PROG_CC — проверяет наличие компилятора C и устанавливает переменную CC;
- AC_CHECK_HEADERS — проверяет наличие указанных заголовочных файлов;
- AC_CHECK_LIB — проверяет наличие библиотеки и ее функций;
- AC_CHECK_FUNC — проверяет наличие указанной функции в библиотеках;
- AC_OUTPUT — определяет выходные файлы, которые должны быть сгенерированы;
- AC_CONFIG_FILES — указывает файлы, которые должны быть созданы из шаблонов.
Процесс работы и генерируемые файлы
Типичный процесс работы с autoconf включает создание нескольких файлов, которые преобразуются в готовую систему сборки:
- configure.ac → configure (через
autoconf); - config.h.in → config.h (через
configure); - Makefile.am → Makefile.in → Makefile (через
automakeиconfigure); - Запуск
./configureсоздает окончательные Makefile и config.h для конкретной системы.