Automake - Automake - Wikipedia

Automake
Heckert GNU white.svg
Разработчики)Проект GNU
изначальный выпуск28 мая 1996 г.; 24 года назад (1996-05-28)
Стабильный выпуск
1.16.2 / 21 марта 2020 г.; 9 месяцев назад (2020-03-21)[1]
Репозиторий Отредактируйте это в Викиданных
Операционная системаКроссплатформенность
ТипИнструмент программирования
ЛицензияСтандартная общественная лицензия GNU
Интернет сайтwww.gnu.org/программного обеспечения/ automake/ Отредактируйте это в Викиданных

В разработка программного обеспечения, GNU Automake это инструмент программирования для автоматизации частей процесса компиляции. Это облегчает обычные проблемы компиляции. Например, он указывает на необходимые зависимости.

Он автоматически генерирует один или несколько Makefile.in из файлов, называемых Makefile.am. Каждый Makefile.am содержит, среди прочего, полезные определения переменных для скомпилированного программного обеспечения, такие как компилятор и компоновщик флаги, зависимости и их версии и т. д. Сгенерированный "Makefile.in"s переносимы и совместимы с соглашениями Makefile в Стандарты кодирования GNU, и может использоваться настроить скрипты создать рабочий Makefile.[2]

В Фонд свободного программного обеспечения поддерживает автопроизводитель как один из GNU программ, а также в рамках Система сборки GNU. Он используется для создания нескольких приложений и библиотек GNU, таких как GTK,[3] а также программное обеспечение, отличное от GNU, такое как XCircuit.[4]

Процесс

Блок-схема autoconf и automake

Automake стремится позволить программисту писать make-файл на языке более высокого уровня, вместо того, чтобы писать весь make-файл вручную. В простых случаях достаточно дать:

  • Строка, в которой объявляется имя программы для сборки
  • Список исходных файлов
  • Список параметров командной строки, передаваемых в компилятор (например, в каких каталогах будут находиться файлы заголовков)
  • Список параметров командной строки, передаваемых в компоновщик (какие библиотеки нужны программе и в каких каталогах их искать)

Automake также позаботится об автоматической генерации зависимость Информация,[5] так что при изменении исходного файла при следующем вызове команды make будет известно, какие исходные файлы необходимо перекомпилировать. Если компилятор позволяет это, Automake пытается сделать систему зависимостей динамической: всякий раз, когда исходный файл компилируется, зависимости этого файла обновляются, запрашивая компилятор повторно создать список зависимостей файла. Другими словами, отслеживание зависимостей - это побочный эффект процесса компиляции.

Это пытается избежать проблемы с некоторыми системами статических зависимостей, где зависимости обнаруживаются только один раз, когда программист начинает работать над проектом.[6] В таком случае, если исходный файл получает новую зависимость (например, если программист добавляет новую директиву #include в C исходный файл), то возникает несоответствие между реальными зависимостями и теми, которые используются системой компиляции. Затем программист должен заново создать зависимости, но рискует забыть об этом.

В общем случае automake генерирует зависимости с помощью связанного сценария depcomp, который соответствующим образом вызывает компилятор или откатывается к сделать зависимость. Если компилятор является достаточно свежей версией gcc тем не менее, automake встроит код генерации зависимостей для прямого вызова gcc.

Дизайн

Automake написан на Perl и должен использоваться с GNU Autoconf.[2] Automake содержит следующие команды:

  • местный
  • автопроизводитель

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

Как и Autoconf, Automake не полностью обратная совместимость. Например, проект, созданный с помощью automake 1.13, не обязательно будет работать с automake 1.14.[7] Для этого могут потребоваться сложные проекты, включающие несколько версий.

Смотрите также

Примечания

  1. ^ Мейеринг, Джим (21 марта 2020 г.). "automake-1.16.2 выпущен [стабильный]" (Список рассылки). Проект GNU. Получено 22 марта 2020.
  2. ^ а б «Автомейк». GNU. Фонд свободного программного обеспечения. 2018-02-25. Получено 2018-02-26.
  3. ^ Библиотеки GTK +
  4. ^ Документация XCircuit
  5. ^ «Автоматическое отслеживание зависимостей». Руководство Automake. GNU.org. Фонд свободного программного обеспечения.
  6. ^ "История автомата". GNU.org.
  7. ^ Автомейк "сломан"?

Рекомендации

  • Vaughan, Gary V .; Эллистон, Бен; Тромей, Том. Gnu Autoconf, Automake и Libtool. Sams. ISBN  1-57870-190-2.

внешняя ссылка