В настоящее время я изучаю, как использовать toolchain autoconf
/automake
. Кажется, у меня есть общее понимание рабочего процесса - в основном у вас есть configure.ac
script, который генерирует исполняемый файл configure
. Созданный configure
script затем выполняется конечным пользователем для генерации Makefile
s, поэтому программа может быть создана/установлена.
Таким образом, установка для обычного конечного пользователя в основном:
./configure
make
make install
make clean
Хорошо, теперь здесь, где я смущен:
Как разработчик, я заметил, что автоматически сгенерированная конфигурация script иногда не запускается и будет с ошибкой:
config.status: error: cannot find input file: `somedir/Makefile.in'
Это меня смущает, потому что я думал, что configure script должен генерировать Makefile.in
. Поэтому, чтобы найти ответы на некоторые вопросы, я обнаружил, что это можно исправить с помощью autogen.sh
script, который в основном "сбрасывает" состояние среды autoconf
. Типичным autogen.sh
script будет что-то вроде:
aclocal \
&& automake --add-missing \
&& autoconf
Хорошо. Но, как конечный пользователь, который загружал бесчисленные tarballs на протяжении всей моей жизни, мне никогда не приходилось использовать autogen.sh
script. Все, что я сделал, это разблокировать tarball и выполнить обычную команду configure/make/make install/make clean.
Но как разработчик, который теперь использует autoconf
, кажется, что configure
фактически не запускается, если вы сначала не запустите autogen.sh
. Поэтому я считаю это очень запутанным, потому что я думал, что конечный пользователь не должен запускать autogen.sh
.
Итак, зачем мне сначала запускать autogen.sh
- для того, чтобы configure script нашел Makefile.in
? Почему configure script просто не генерирует его?