Введение
Автоматический конструктор скриптов конфигурации. GNU Autoconf — это инструмент для создания скриптов конфигурации, необходимых для сборки, установки и упаковки программного обеспечения на компьютерных системах с доступной оболочкой Bourne. Autoconf не зависит от используемых языков программирования, но часто применяется в проектах, использующих C, C++, Fortran, Fortran 77, Erlang или Objective C.
GNU Autoconf is a tool for producing configure scripts for building, installing, and packaging software on computer systems where a Bourne shell is available. Autoconf is agnostic about the programming languages used, but it is often used for projects using C, C++, Fortran, Fortran 77, Erlang, or Objective C.
A configure script configures a software package for installation on a particular target system. After running a series of tests on the target system, the configure script generates header files and a makefile from templates, thus customizing the software package for the target system. Together with Automake and Libtool, Autoconf forms the GNU Build System, which comprises several other tools, notably Autoheader.
Скрипт конфигурации подготавливает программный пакет к установке на конкретную целевую систему. После проведения серии тестов на целевой системе скрипт конфигурации генерирует файлы заголовков и makefile из шаблонов, тем самым адаптируя программный пакет под данную систему. Вместе с Automake и Libtool, Autoconf составляет GNU Build System, включающую в себя и другие инструменты, в частности Autoheader.
GNU Autoconf is a tool for producing configure scripts for building, installing, and packaging software on computer systems where a Bourne shell is available. Autoconf is agnostic about the programming languages used, but it is often used for projects using C, C++, Fortran, Fortran 77, Erlang, or Objective C.
A configure script configures a software package for installation on a particular target system. After running a series of tests on the target system, the configure script generates header files and a makefile from templates, thus customizing the software package for the target system. Together with Automake and Libtool, Autoconf forms the GNU Build System, which comprises several other tools, notably Autoheader.
Обзор использования
Разработчик задает желаемое поведение скрипта конфигурации, записывая список инструкций на языке GNU m4 в файле с именем "configure.ac". Для описания распространенных инструкций скрипта конфигурации доступна библиотека предопределенных макросов m4. Autoconf преобразует инструкции в файле "configure.ac" в переносимый скрипт конфигурации. Системе, на которой будет выполняться сборка, не требуется установленный Autoconf: Autoconf нужен только для создания скрипта конфигурации, который обычно распространяется вместе с программным обеспечением.
История
Autoconf был начат летом 1991 года Дэвидом Маккензи для поддержки его работы в Фонде свободного программного обеспечения. В последующие годы он развивался, включая улучшения от множества авторов, и стал наиболее широко используемой системой настройки сборки для разработки переносимого свободного и открытого программного обеспечения.
Критика
Существует критика, утверждающая, что Autoconf использует устаревшие технологии, имеет множество устаревших ограничений и неоправданно усложняет простые сценарии для автора скриптов `configure.ac`. В частности, к часто упоминаемым слабым сторонам Autoconf относятся:
Общая сложность используемой архитектуры, при которой большинство проектов используют множество повторений. Некоторые считают, что скрипты `configure`, генерируемые Autoconf, предоставляют только управляемый вручную интерфейс командной строки без какой-либо стандартизации. M4 является необычным и неизвестным многим разработчикам. Для расширения Autoconf нестандартными проверками разработчикам потребуется его изучить. Слабая обратная и прямая совместимость требует использования оберточного скрипта. Скрипты, генерируемые Autoconf, обычно велики и достаточно сложны. Несмотря на подробное ведение логов, их отладка все еще может быть затруднительной. Из-за этих ограничений несколько проектов, использовавших GNU Build System, перешли на другие системы сборки, такие как CMake и SCons.
General complexity of used architecture, most projects use multiple repetitions. Some people think that 'configure' scripts generated by autoconf provide only manual driven command line interface without any standardization. M4 is unusual and unknown to many developers. Developers will need to learn it to extend autoconf with non standard checks. Weak backward and forward compatibility requires a wrapper script. Autoconf generated scripts are usually large and rather complex. Although they produce extensive logging, debugging them can still be difficult. Due to these limitations, several projects that used GNU Build System switched to different build systems, such as CMake and SCons.