Attualmente sto imparando come utilizzare la toolchain /automake
. Mi sembra di avere una comprensione generale del flusso di lavoro qui - in pratica hai uno script configure.ac
che genera un file eseguibile configure
. Lo script configure
generato viene quindi eseguito dall'utente finale per generare Makefile
s, in modo che il programma possa essere creato/installato.Confuso su configure script e Makefile.in
Così l'installazione per un tipico utente finale è fondamentalmente:
./configure
make
make install
make clean
Okay, ora qui è dove sono confuso:
Come sviluppatore, ho notato che l'auto-generato configurare lo script a volte non funzionerà, e sarà errore con:
config.status: error: cannot find input file: `somedir/Makefile.in'
Questo mi confonde, perché ho pensato che lo script di configurazione dovrebbe generare il Makefile.in
. Quindi, cercando su Google alcune risposte, ho scoperto che questo può essere risolto con uno script autogen.sh
, che sostanzialmente "ripristina" lo stato dell'ambiente autoconf
. Un tipico autogen.sh
sceneggiatura sarebbe qualcosa di simile:
aclocal \
&& automake --add-missing \
&& autoconf
bene Va bene. Ma come utente finale che ha scaricato innumerevoli tarball per tutta la mia vita, io ho mai dovevo usare uno script autogen.sh
. Tutto quello che ho fatto è stato decomprimere il tarball e fare il solito configure/make/make install/make clean routine.
Ma, come uno sviluppatore che ora è utilizzandoautoconf
, sembra che configure
in realtà non gestita a meno che non si esegue autogen.sh
prima. Quindi trovo questo molto confuso, perché pensavo che l'utente finale non avrebbe dovuto eseguire autogen.sh
.
Quindi, perché prima devo eseguire autogen.sh
- in modo che lo script di configurazione trovi Makefile.in
? Perché lo script configure non lo genera semplicemente?
GNU Autoconf (o forse GNU Automake) viene fornito con un comodo script "autoreconf' che fa la stessa cosa di" autogen.sh "e altro. Per quanto riguarda il motivo per cui è necessario eseguirlo, si dispone di un 'Makefile.am' nella sottodirectory' somedir' per Automake per trovare 'somedir/Makefile.am' e generare' somedir/Makefile.in' da esso? –