Что такое команда `./ Configure`?

Я обычно вижу ./configure строить что-то. Это выглядит сценарий, созданный инструментом. И сегодня я понял, что не знаю, что это такое.

Что это? Какова роль этого сценария, и кто это делает? И как я могу сделать что-то подобное?

3 ответа

Решение

Каждая система отличается. Например, существуют разные компиляторы и версии компиляторов, инструменты вашей системы могут поддерживать определенные флаги (или нет), у вас могут быть установлены определенные библиотеки или нет, и т. Д. С. Есть много вещей, которые могут отличаться на компьютерах, которые могут влиять на то, как составить проект.

configure Сценарий пытается выяснить все эти вещи и выдает жалобу, если не выполнены предварительные условия (например, когда отсутствует компилятор или отсутствует библиотека). Затем он генерирует Makefile, специфичный для вашей системы, и просто набирает make (надеюсь) правильно построит проект в вашей системе.

До configureМы должны были вручную настроить Make-файлы (часто настраиваемые части были смещены в отдельный Make-файл). Это означало, что вам нужно было много знать о вашей системе, и часто вам нужно было изменить Make-файлы. Это было большим препятствием, тем более что почти каждый проект делал это по-своему. GNU autoconf а также automake (которые разбирают Makefile.am а также configure.ac файлы для генерации Makefile.in а также configure скрипты) очень упрощенные вещи здесь (особенно если вы делаете экзотические вещи, такие как кросс-компиляция, для которой почти ни один проект не хочет добавлять поддержку; если вы делаете autoconf/automake в чистом виде, чем вы получаете кросс-компиляцию бесплатно, например).

Обычно это скрипт, созданный GNU autoconf. Другие инструменты сборки также могут использовать то же имя. Autoconf - довольно сложный инструмент, но в Интернете доступно несколько коротких руководств. Мне нравится этот: http://www.edwardrosten.com/code/autoconf/index.html

GNU Autoconf Autoconf генерирует скрипт настройки на основе содержимого файла configure.ac, который характеризует конкретную часть исходного кода. При запуске сценария configure сканирует среду сборки и генерирует подчиненный сценарий config.status, который, в свою очередь, преобразует другие входные файлы и чаще всего Makefile.in в выходные файлы (Makefile), которые подходят для этой среды сборки. Наконец, программа make использует Makefile для генерации исполняемых программ из исходного кода.

http://en.wikipedia.org/wiki/GNU_build_system

Другие вопросы по тегам