2010-05-29 15 views
16

Sto provando lighttpd per un progetto Linux incorporato. Ho ottenuto l'ultimo pacchetto sorgente e ho iniziato a scrivere un master Makefile che incapsulava tutto per configurare, compilare, installare (per testare) ecc.Autotools: come pulire i file creati da "./configure" nel progetto lighttpd?

E viceversa, voglio pulire ogni passaggio. Dopo la pulizia non dovrebbero più esserci file generati. Questo è importante per i test ripetitivi.

Mi chiedo se esiste un modo per eseguire una pulizia completa di ciò che è stato generato ./configure? Non ho familiarità con autotools nei dettagli.

Eventuali suggerimenti?

+0

Hai considerato l'utilizzo degli strumenti dal software di controllo del codice sorgente per ottenere uno stato pulito delle tue fonti? –

+0

Bene, attualmente la mia macchina di prova (virtuale) (a proposito, Ubuntu 10.04) non usa il controllo del codice sorgente. – Andi

risposta

23

Personalmente utilizzerei davvero le funzionalità di un software di controllo del codice sorgente (dovresti usarne uno). Questo farebbe pulizia rendere indipendente dal processo di compilazione. Vedi per es. svn-cleanup o git clean.

Tuttavia, automake consente alcuni ritocchi quando rimuovere i file. Questo ha (intenzionalmente?) Limitazioni incorporate su quali file generati dagli autotools possono essere rimossi in questo modo. Dai un'occhiata allo the definitions for MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, and MAINTAINERCLEANFILES e regola i tuoi Makefile.am. Con loro è possibile rimuovere un sacco di cose con

make mostlyclean 
make clean 
make distclean 
make maintainer-clean 

Non sarà possibile rimuovere ad es. Makefile o .deps/ in questo modo.

Per quanto riguarda l'affidabilità di make clean, dovrebbe "funzionare al 100%" se ci si attiene a specificare in modo pulito i file e si sta lontani dall'intervento manuale. Altrimenti extend the cleanup rules.

+0

Grazie Honk, darò un'occhiata alle parti suggerite della documentazione. Se make clean funziona al 99% e alcuni file ben noti possono essere rimossi manualmente, questo sarà ok. Un'altra domanda sorge spontanea: è possibile reindirizzare tutto l'output generato ad una specifica directory di compilazione (come CMake)? Questo sarebbe utile per la pulizia e per la costruzione di piattaforme diverse, immagino? – Andi

+0

Ok, sembra che un comando del tipo "rendi cleanclean cleanclean cleaner cleaner" faccia il lavoro! Un effetto divertente è che nel pacchetto lighttpd 2 i file di origine sono modificati dai processi di compilazione: src/configparser.c e src/mod_ssi_exprparser.c. Ma solo i relativi includono percorsi. Forse questi file vengono rigenerati dal processo di compilazione. Grazie, Honk! – Andi

+2

@Andi: l'uso di una directory di build è molto simile a cmake: 'mkdir build && cd build && $ CONF_PATH/.configure && make' –

3

Oltre ai Benjamin Bannier's answer, i nomi file generati possono essere elencati in .gitignore file in modo che essi vengono ignorati, non monitorati con git e non irritano e preoccupano quando viene eseguito git status. Non è possibile rimuovere questi file con git clean. In questo caso io personalmente uso il comando rm -rf * ; git checkout ..

Ma non usarlo se si hanno altri file ignorati che non si desidera rimuovere!

+3

Puoi ** usare 'git clean' per rimuovere i file ignorati:' git clean -X'. –

Problemi correlati