Почему "autoreconf" часто не используется?
Я новичок в Autotools. По моему мнению, для создания программного обеспечения с помощью Autotools можно использовать следующие основные шаги:
-
autoreconf --install
-
./configure
-
make
Однако я заметил, что большинству программных пакетов с открытым исходным кодом (в Linux) не нужен шаг 1. Они больше всего нуждаются в шагах 2 и 3 для сборки. Похоже, что они уже упакованы с помощью Makefile.in
. Мне интересно, почему? Они вручную кодируют Makefile.in
, или разработчик программного обеспечения использует autoreconf
для генерации Makefile.in
перед созданием программного пакета?
Спасибо.
Ответы
Ответ 1
Разработчик программного обеспечения, который создает tarball (или кто проверяет источники из системы управления версиями), обычно вызывает autoreconf
из script, называемого bootstrap.sh
или autogen.sh
, который может делать другие вещи. autoreconf
может также вызываться Makefile
(например, при изменении configure.ac
).
Большинство пользователей никогда не будут запускать autoreconf
, даже те, кто вносит некоторые изменения в исходный код (например, исправления). Только тем, кто должен внести изменения в сам пакет (внесение изменений в configure.ac
и/или Makefile.am
), потребуется autoreconf
.
Ответ 2
Запуск autoreconf
требует наличия уже установленной версии autotools. Это приводит к проблеме с курицей и яйцом - как вы, в первую очередь, устанавливаете autotools? Он также добавляет дополнительную зависимость, которая не нужна большинству конечных пользователей.
В результате большинство пакетов запускают autoreconf перед созданием исходных tarballs, которые они распространяют. Это означает, что если вы загружаете такой tarball, вы можете настроить и построить его без необходимости сначала устанавливать autotools.