2010-05-29 3 views
16

Ich probiere lighttpd für ein eingebettetes Linux-Projekt aus. Ich habe das neueste Source-Paket bekommen und habe angefangen, ein Master-Makefile zu schreiben, das alle Komponenten von configure, compile, install (zum Testen) usw. einkapselt.Autotools: Wie bereinigt man Dateien, die mit "./configure" im Lighttpd-Projekt erstellt wurden?

Und umgekehrt, ich möchte jeden Schritt aufräumen. Nach der Bereinigung sollten keine generierten Dateien mehr vorhanden sein. Dies ist wichtig für wiederholte Tests.

Ich frage mich, ob es eine Möglichkeit gibt, eine vollständige Reinigung von was ./configure erzeugt zu tun? Ich bin nicht vertraut mit autotools im Detail.

Irgendwelche Hinweise?

+0

Haben Sie in Betracht gezogen, die Tools Ihrer Quellcodeverwaltungssoftware zu verwenden, um einen sauberen Zustand Ihrer Quellen zu erhalten? –

+0

Nun, zur Zeit benutzt meine (virtuelle) Testmaschine (übrigens Ubuntu 10.04) keine Quellcodeverwaltung. – Andi

Antwort

23

Ich persönlich würde wirklich die Funktionen einer Quellcodeverwaltungssoftware (Sie sollten eine verwenden) dafür verwenden. Dies würde Bereinigung unabhängig von Ihrem Build-Prozess machen. Siehe z.B. svn-cleanup oder git clean.

Nichtsdestotrotz erlaubt automake einige Feinabstimmungen, wann welche Dateien entfernt werden sollen. Dies hat (absichtlich?) Eingebaute Beschränkungen dafür, welche Dateien, die von Autotools erzeugt werden, auf diese Weise entfernt werden können. Schauen Sie sich the definitions for MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, and MAINTAINERCLEANFILES an und passen Sie Ihre Makefile.am an. Mit ihnen können Sie eine Menge Zeug mit

entfernen Sie können nicht z. Makefile oder .deps/ auf diese Weise.

Wie für die Zuverlässigkeit von make clean sollte es "100% funktionieren", wenn Sie Ihre Dateien sauber zu spezifizieren und von manuellen Eingriffen bleiben. Ansonsten extend the cleanup rules.

+0

Danke Honk, ich werde mir die vorgeschlagenen Teile der Dokumentation ansehen. Wenn make clean 99% funktioniert und einige bekannte Dateien manuell entfernt werden können, ist dies in Ordnung. Eine andere Frage stellt sich: ist es möglich, alle generierten Ausgaben in ein bestimmtes Build-Verzeichnis (wie CMake) umzuleiten? Dies wäre hilfreich für die Bereinigung und zum Erstellen für verschiedene Plattformen, denke ich? – Andi

+0

Ok, es sieht so aus, als würde ein Befehl wie "make mostclean clean distclean maintainer-clean" den Job erledigen! Ein witziger Effekt ist, dass in dem Paket lighttpd 2 Quelldateien durch die Build-Prozesse modifiziert werden: src/configparser.c und src/mod_ssi_exprparser.c. Aber nur die Beziehung enthält Pfade. Vielleicht werden diese Dateien durch den Build-Prozess neu generiert. Danke, Honk! – Andi

+2

@Andi: Verwenden eines Build-Verzeichnisses ist sehr ähnlich zu cmake: 'mkdir build && cd build && $ CONF_PATH/.configure && make' –

3

Neben Benjamin Bannier's answer können die generierten Dateien Namen in .gitignore Datei aufgelistet werden, so dass sie ignoriert werden, nicht mit git verfolgt und nicht reizen und Mühe, wenn git status laufen. Sie können diese Dateien nicht mit git clean entfernen. In diesem Fall benutze ich persönlich rm -rf * ; git checkout . Befehl.

Aber verwenden Sie das nicht, wenn Sie andere ignorierte Dateien haben, die Sie nicht entfernen möchten!

+3

Sie können ** 'git clean' verwenden, um ignorierte Dateien zu entfernen:' git clean -X'. –

Verwandte Themen