GNU Autoconf — это инструмент для создания сценариев конфигурации для сборки, установки и упаковки программного обеспечения на компьютерных системах, где доступна оболочка Bourne .
Autoconf не зависит от используемых языков программирования, но часто применяется для проектов, использующих C , C++ , Fortran , Fortran 77, Erlang или Objective-C .
Скрипт конфигурации настраивает программный пакет для установки на конкретной целевой системе. После запуска серии тестов на целевой системе скрипт конфигурации генерирует файлы заголовков и makefile из шаблонов, тем самым настраивая программный пакет для целевой системы. Вместе с Automake и Libtool Autoconf образует GNU Build System , которая включает в себя несколько других инструментов, в частности 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 являются:
Из-за этих ограничений несколько проектов, использовавших GNU Build System, перешли на другие системы сборки, такие как CMake и SCons . [3] [9]