Автоконф.
![]() | |
Оригинальный автор(ы) | Дэвид Маккензи |
---|---|
Разработчик(и) | Проект GNU |
Первоначальный выпуск | 1991 |
Стабильная версия | 2.72 [ 1 ] ![]() |
Репозиторий | |
Написано в | Перл |
Операционная система | Кросс-платформенный |
Тип | Инструмент программирования |
Лицензия | GNU GPL |
Веб-сайт | www |
GNU Autoconf — это инструмент для создания сценариев настройки для сборки, установки и упаковки программного обеспечения в компьютерных системах, где оболочка Bourne доступна .
Autoconf не зависит от используемых языков программирования, но его часто используют для проектов, использующих C , C++ , Fortran , Fortran 77, Erlang или Objective-C .
Сценарий настройки настраивает пакет программного обеспечения для установки в определенной целевой системе. После запуска серии тестов в целевой системе сценарий настройки генерирует файлы заголовков и make-файл на основе шаблонов, тем самым настраивая пакет программного обеспечения для целевой системы. Вместе с Automake и Libtool Autoconf образует систему сборки GNU , которая включает в себя несколько других инструментов, в частности Autoheader.
Обзор использования
[ редактировать ]
Разработчик определяет желаемое поведение сценария настройки, записывая список инструкций на языке GNU m4 в файл с именем «configure.ac». библиотека предопределенных макросов Доступна m4 для описания общих инструкций сценария настройки. Autoconf преобразует инструкции из файла configure.ac в переносимый сценарий настройки. В системе, которая будет выполнять сборку, не обязательно должен быть установлен Autoconf: Autoconf необходим только для сборки сценария настройки, который обычно поставляется с программным обеспечением.
История
[ редактировать ]Autoconf был начат летом 1991 года Дэвидом Маккензи для поддержки его работы в Free Software Foundation . В последующие годы в нее вошли усовершенствования, предложенные различными авторами, и она стала наиболее широко используемой системой конфигурации сборки для написания переносимого бесплатного программного обеспечения или программного обеспечения с открытым исходным кодом .
Подход
[ редактировать ]Autoconf аналогичен пакету Metaconfig, используемому Perl . Система imake , ранее использовавшаяся в X Window System (до X11R6.9), тесно связана с ней, но имеет другую философию.
Подход Autoconf к переносимости заключается в проверке функций , а не версий . Например, собственный компилятор C в SunOS 4 не поддерживал ISO C. Однако пользователь или администратор может установить компилятор, совместимый с ISO C. Подход, основанный исключительно на версии, не позволит обнаружить наличие компилятора ISO C, но подход с функциональным тестированием позволит обнаружить компилятор ISO C, установленный пользователем. Смысл этого подхода заключается в получении следующих преимуществ:
- сценарий настройки может дать разумные результаты на новых или неизвестных системах
- он позволяет администраторам настраивать свои машины, а сценарий настройки использует преимущества настроек.
- нет необходимости отслеживать мельчайшие детали версий, номеров патчей и т. д., чтобы выяснить, поддерживается ли конкретная функция или нет.
Autoconf предоставляет обширную документацию о невозможности переноса многих конструкций оболочки POSIX в старые оболочки и об ошибках в них. Он также предоставляет M4SH, замену синтаксиса оболочки на основе макросов. [ 2 ]
Критика
[ редактировать ]Существует некоторая критика, в которой говорится, что Autoconf использует устаревшие технологии, имеет множество устаревших ограничений и излишне усложняет простые сценарии для автора сценариев configure.ac . В частности, часто упоминаемыми слабыми местами Autoconf являются:
- Общая сложность используемой архитектуры, в большинстве проектов используется многократное повторение. [ 3 ] [ 4 ]
- Некоторые люди думают, что сценарии настройки, созданные Autoconf, предоставляют только управляемый вручную интерфейс командной строки без какой-либо стандартизации. [ 5 ] Хотя это правда, что некоторые разработчики не соблюдают общепринятые соглашения, такие соглашения существуют и широко используются. [ 6 ]
- m4 необычен и неизвестен многим разработчикам. Разработчикам необходимо будет изучить его, чтобы расширить Autoconf нестандартными проверками. [ 5 ] [ 7 ]
- Для слабой обратной и прямой совместимости требуется сценарий-оболочка. [ 8 ]
- Скрипты, создаваемые Autoconf, обычно большие и довольно сложные. Хотя они ведут обширное журналирование, их отладка все равно может быть затруднена.
Из-за этих ограничений несколько проектов, использовавших GNU Build System, перешли на другие системы сборки, такие как CMake и SCons . [ 3 ] [ 9 ]
См. также
[ редактировать ]- CMake — альтернативная система сборки.
- Meson — еще одна система сборки
- Настроить скрипт
- система сборки GNU
- pkg-config — обнаружение зависимостей пакетов
Ссылки
[ редактировать ]- ^ Закари Вайнберг (22 декабря 2023 г.). «autoconf-2.72 выпущен [стабильный]» . Проверено 25 декабря 2023 г.
- ^ «Портативная оболочка» . Автоконф . Проверено 20 января 2020 г. .
- ^ Jump up to: а б Нойндорф, Александр (21 июня 2006 г.). «Почему проект KDE перешел на CMake — и как» .
- ^ Камп, Пол-Хеннинг (15 августа 2012 г.). «Поколение, потерянное на базаре» . Очередь АКМ . 10 (8): 20–23. дои : 10.1145/2346916.2349257 . S2CID 11656592 .
- ^ Jump up to: а б МакКолл, Эндрю (21 июня 2003 г.). «Остановите безумие autoconf! Зачем нам нужна новая система сборки» .
- ^ «Стандарты кодирования GNU» .
- ^ Камп, Пол-Хеннинг (20 апреля 2010 г.). «Вы назвали их инструментами для автокрапа ?» . Архивировано из оригинала 11 сентября 2017 г. Проверено 16 августа 2017 г.
- ^ Дикки, Томас. «почему я до сих пор использую autoconf 2.13» .
- ^ «Blender.org — Системы сборки» . Архивировано из оригинала 2 декабря 2008 г. Проверено 10 июня 2009 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Архив макросов GNU Autoconf
- Домашняя страница Goat Book (также известная как Autobook). Архивировано 20 декабря 2010 г. в Wayback Machine.
- Использование Automake и Autoconf с C++
- Использование библиотек C/C++ с Automake и Autoconf .
- Домашняя страница Autotoolset
- Autotools: руководство для практикующих специалистов по Autoconf, Automake и Libtool.
- Автоинструменты Разрушитель мифов