2013-10-09 4 views
12

Я новичок в Autotools. В моем понимании, можно было бы использовать следующие основные шаги для создания программного обеспечения с использованием Autotools:Почему «autoreconf» часто не используется?

  1. autoreconf --install
  2. ./configure
  3. make

Однако я заметил, что большинство с открытым исходным кодом программных пакетов (на Linux) не нуждается в шаге 1. Они больше всего нуждаются в шагах 2 и 3 для сборки. Похоже, что они уже упакованы с Makefile.in. Мне интересно, почему? Записывают ли они вручную код Makefile.in, или разработчик программного обеспечения использует autoreconf для создания Makefile.in перед созданием программного пакета?

Спасибо.

+5

OK. Я думаю, что сам получил возможный ответ: не требуя, чтобы пользователь запускал «autoreconf», программный пакет ставит меньше требований к системе конечных пользователей. То есть Конечным пользователям нет необходимости устанавливать Autotools. Я думаю, что на самом деле это довольно большая и веская причина. – user1783732

+1

Это правильно; когда 'configure' запускается, все потребности пользователя - это пара интерпретаторов сценариев (оболочка Bourne, sed, может быть, perl), плюс инструментальная цепочка компилятора. Даже если все библиотечные зависимости отсутствуют, скрипт 'configure' должен иметь возможность запускать и диагностировать проблему или работать с ней. Когда вы запускаете 'make dist-gzip', вы получаете tarball с скриптом' configure', плюс все файлы шаблонов '* .in', упакованные таким образом, чтобы пользователю не приходилось выполнять предыдущие шаги, требующие autotools. – DanielKO

ответ

6

разработчик программного обеспечения, который создает архив (или кто проверяет источники из системы контроля версий), как правило, вызывать autoreconf из сценария под названием bootstrap.sh или autogen.sh, которые могут делать другие вещи. autoreconf может быть вызван Makefile также (как если configure.ac изменился).

Большинство пользователей никогда не должно необходимо запустить autoreconf, даже те, кто вносит некоторые изменения в источник (например, исправления). Только тем, кто должен внести изменения в сам пакет (внесение изменений в configure.ac и/или Makefile.am), потребуется autoreconf.

2

Запуск autoreconf требует наличия уже установленной версии autotools. Это приводит к проблеме с курицей и яйцом - как вы, в первую очередь, устанавливаете autotools? Он также добавляет дополнительную зависимость, которая не нужна большинству конечных пользователей.

В результате самые упаковщики запускают autoreconf перед созданием исходных tarballs, которые они распространяют. Это означает, что если вы загрузите такой tarball, вы можете настроить и построить его без необходимости сначала устанавливать autotools.

Смежные вопросы