Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Он автоматически создает один или несколько файлов Makefile.in из файлов с именем Makefile.am . Каждый файл Makefile.am содержит, среди прочего, полезные определения переменных для скомпилированного программного обеспечения, такие как флаги компилятора и компоновщика , зависимости и их версии и т. Д. Сгенерированные файлы « Makefile.in » переносимы и соответствуют соглашениям 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, который соответствующим образом вызывает компилятор или откатывается к makedepend . Однако, если компилятор является достаточно свежей версией gcc , automake встроит код генерации зависимостей для прямого вызова gcc.

Дизайн [ править ]

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

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

aclocal - это программа общего назначения, которая может быть полезна пользователям autoconf. GNU Compiler Collection , например, использует ACLOCAL , даже если его Makefile написана рука.

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

См. Также [ править ]

  • Настроить (вычисления)
  • Сделать (программное обеспечение)

Заметки [ править ]

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

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Интернет-версия The Goat Book, также известная как Autobook
  • Комбинированное руководство для Automake и Autoconf
  • Домашняя страница Autotoolset