automake
Инструмент для автоматической генерации переносимых Makefile-файлов в соответствии со стандартами GNU Coding Standards. Он работает совместно с autoconf, позволяя разработчикам описывать структуру сборки проекта на высоком уровне абстракции, после чего automake преобразует эти описания в подробные и корректные Makefile-файлы. Automake берет на себя рутинные аспекты создания Makefile, такие как поддержка стандартных целей (all, install, dist, clean), установка зависимостей и правил пересборки, что значительно упрощает процесс создания переносимого программного обеспечения.
Особенности
- автоматическая генерация переносимых Makefile из высокоуровневого описания;
- поддержка стандартных целей сборки, установки и дистрибуции в соответствии с GNU Coding Standards;
- интеграция с autoconf для создания полностью настраиваемой системы сборки;
- поддержка сборки программ, библиотек, скриптов и данных из единого описания;
- автоматическое управление зависимостями и правилами пересборки.
Основные компоненты
Automake предоставляет набор макросов и шаблонов для описания структуры проекта и автоматической генерации Makefile (подробнее с документацией можно ознакомиться здесь):
Основные исполняемые программы
Ключевые утилиты automake, используемые в процессе создания системы сборки:
- automake — генерирует файлы
Makefile.inизMakefile.am; обрабатывает всеMakefile.amв проекте и создает соответствующиеMakefile.in, которые затем используются скриптомconfigureдля создания окончательныхMakefile; - aclocal — хотя и является частью automake, эта утилита собирает макросы из установленных пакетов и создает файл
aclocal.m4, который затем используется autoconf и automake; обеспечивает доступ к макросам, определенным в automake и других пакетах.
Файлы описания проекта
Automake использует специальные файлы для описания структуры и параметров сборки проекта:
- Makefile.am — файлы описания сборки для automake; содержат высокоуровневое описание целей сборки (программы, библиотеки, данные), которые automake преобразует в подробные
Makefile.in; - configure.ac (или configure.in) — хотя это файл для autoconf, он содержит макросы, необходимые для работы automake, такие как
AM_INIT_AUTOMAKE; - aclocal.m4 — файл с макросами, собранными утилитой
aclocal, включая макросы automake.
Интеграция с autoconf и libtool
Automake тесно интегрируется с другими инструментами GNU Build System:
- autoconf — automake полагается на скрипт
configure, сгенерированный autoconf, для подстановки значений переменных вMakefile; - libtool — automake может использовать libtool для сборки и установки разделяемых библиотек единообразным образом на разных платформах;
- pkg-config — часто используется в сочетании с automake для получения флагов компиляции и линковки для внешних библиотек.
Процесс работы и генерируемые файлы
Типичный процесс использования automake в проекте включает следующие шаги:
- Создание файлов
Makefile.amдля каждого подкаталога проекта с описанием целей сборки; - Добавление макроса
AM_INIT_AUTOMAKEвconfigure.ac; - Запуск
aclocalдля сбора макросов вaclocal.m4; - Запуск
autoconfдля создания скриптаconfigureизconfigure.ac; - Запуск
automake --add-missingдля созданияMakefile.inфайлов и копирования вспомогательных скриптов (таких какinstall-sh,depcomp); - Пользователь запускает
./configureдля создания окончательныхMakefileизMakefile.in; - Пользователь запускает
makeдля сборки проекта.