Русская Википедия:Autotools
Autotools (МФА Шаблон:МФА2; Шаблон:Tr-en) — это система сборки проекта GNU, набор программных средств, предназначенных для поддержки переносимости исходного кода программ между UNIX-подобными системами[1].
Перенос кода с одной системы на другую может оказаться непростой задачей. Различные реализации компилятора языка Си могут существенно различаться: некоторые функции языка могут отсутствовать, иметь другое имя или находиться в разных библиотеках. Программист может решить эту задачу, используя макросы и директивы препроцессора, например #if
, #ifdef
и прочие. Но в таком случае пользователь, компилирующий программу на своей системе, должен будет определить все эти макросы, что не так просто, поскольку существует множество разных дистрибутивов и вариаций систем. Autotools вызываются последовательностью команд ./configure && make && make install
и решают эти проблемы автоматически.
Система сборки GNU Autotools является частью GNU toolchain и широко используется во многих проектах с открытым исходным кодом. Средства сборки распространяются в соответствии с GNU General Public License с возможностью использования их в коммерческих проектах[2][3].
Компоненты GNU Autotools
В средства сборки входят Autoconf, Automake, и Libtool [4]. Другие средства, используемые с GNU Autotools: make, gettext, pkg-config, и, конечно, GCC и binutils.
GNU Autoconf
Autoconf читает файл configure.ac
(или устаревший configure.in
[5]) и генерирует скрипт для настройки под названием configure
. Для обработки файлов autoconf использует GNU-реализацию языка макрокоманд m4.
Сгенерированный скрипт настройки запускается пользователем. Скрипт читает файлы с расширением ".in
", например Makefile.in
, обрабатывает их (выясняя все особенности системы) и получает конечный результат — Makefile
.
Autoconf использует некоторые вспомогательные программы, написанные для упрощения работы. Например, Autoheader работает с заголовочными файлами, autoscan исследует код на наличие типичных проблем переносимости и создаёт изначальный файл configure.ac
.
GNU Automake
Automake читает файлы Makefile.am
и создаёт переносимый Makefile
, то есть Makefile.in
, который затем после обработки скриптом конфигурации становится Makefile
и используется утилитой make.
GNU Libtool
Libtool управляет созданием статических и динамических библиотек на разных UNIX-подобных операционных системах.
Gnulib
Gnulib упрощает процесс создания переносимых программ, использующих Autoconf и Automake.
Ограничения средств сборки GNU
Средства сборки используют sh-скрипты для настройки при сборке.
Средства сборки можно использовать как для создания программ для той же архитектуры, на которой производится сборка, так и для кросс-компиляции для иной архитектуры. [1]. Также возможно настроить сборку для компиляции на Windows, используя MinGW или установив Cygwin или MSYS поверх Windows, чтобы обеспечить необходимый уровень совместимости для выполнения скрипта настройки.
Средства сборки и скрипт настройки работают, как правило, медленно, потому что вызывают различные программы, например, компилятор С, много раз для проверки наличия различных библиотек, заголовочных файлов, и особенностей языка.
См. также
Сноски
Внешние ссылки
- The GNU configure and build system Шаблон:Wayback (англ.)
- The pkg-config Шаблон:Wayback package (англ.)
- automake manual (англ.)
- GNU automake documentation Шаблон:Wayback (англ.)
- Документация GNU autoconf (рус.)
- Autotools Tutorial Шаблон:Wayback (англ.)
- GNU Autoconf, Automake, and Libtool Шаблон:Wayback (англ.)
- Autotools: a practitioner's guide to Autoconf, Automake and Libtool (англ.)
- Цикл статей о GNU Autotools (рус.)
- Использование GNU Autotools. Создание своего скрипта configure и файла Makefile Шаблон:Wayback (рус.)
- Goat Book Шаблон:Wayback
- Autotools Mythbuster (CreativeCommons license Attribution-NonCommercial-ShareAlike 3.0 Unported) Шаблон:Wayback
Шаблон:Системы автоматизации сборки Шаблон:GNU
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ libtool HACKING Шаблон:Wayback including all pertinent license exceptions
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Инструменты компиляции
- Автоматизация сборки
- Свободные системы автоматизации сборки
- Программное обеспечение проекта GNU
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии