Как мне создать сценарий настройки?


79

Это может показаться очень общим вопросом, но вот оно.

У меня есть требование , чтобы создать скрипт конфигурации для моего приложения, в результате этого Configure будет генерируемым makefile(основные configure, make, make install). Мой вопрос в том, с чего мне начать создавать это? Есть ли пример, которому я могу следовать?



6
Вы имеете в виду Autoconf ?
chrisaycock

Так я начал с autotools -> autobook .
Шон Чин

возможно, обратитесь к видео-интро dwheeler.com/autotools и к книге freesoftwaremagazine.com/books/…
Jichao

Ответы:


79

Для создания стандартного скрипта configure вам понадобится GNU autoconf. Вам также могут понадобиться GNU automake и libtool.

Есть масса документации и практических рекомендаций. Погуглите что-нибудь вроде "autoconf automake howto". Хорошая документация находится на официальных страницах руководства:

Autoconf создаст ваш сценарий настройки, начиная с файла "configure.ac". Файл "Makefile.am" проинструктирует automake о том, как создать ваш make-файл с помощью строки конфигурации. Libtool необходим для упрощения работы с библиотеками вашего кода.

Вы можете начать создавать файл configure.ac вручную или использовать помощник «autoscan», который может помочь вам создать что-то полуавтоматическое для вас.

Затем, когда вы будете готовы, этот творит чудеса:

autoreconf -i


Документы GNU предполагают, что могут быть и другие инструменты скрипта настройки: gnu.org/prep/standards/html_node/Makefile-Conventions.html. Существуют ли какие-либо другие инструменты (кроме руководства, конечно)?
Эван Бенн


4

Иногда программный продукт поставляется без сценария настройки. Найдите сценарий autogen.sh. он, вероятно, запустится:

aclocal || die "aclocal failed"
automake --add-missing --force-missing --copy --foreign || die "automake failed"
autoreconf || die "autoreconf failed"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.