Frage

Wir verwenden GNU für unser System. Am Ende unseres Makefiles, wir haben eine Makedepends genannt enthalten, die eine Reihe von .d Dateien erzeugt mit -MM Schalter auf gcc. Wir sind dann die .d-Datei für jede .cc Datei mit einem $ (CXXFILES: .cc = .d) umfassen Linie. Aber wenn wir Datei löschen oder Dateien verschieben, sollte die Abhängigkeiten Pausen und wir müssen manuell die .d-Dateien löschen (auch ein make clean funktioniert nicht, weil die Abhängigkeiten gescheitert)

Gibt es eine Möglichkeit, diese Abhängigkeit .d Dateien oder schließen diese Abhängigkeit, die graziös .d-Dateien zu erzeugen, wird eine Datei gelöscht oder Verlagerung handhaben?

EDIT: Zum Beispiel: Ich habe serial.cc und die Makefiles eine serial.d Datei erzeugen, die eine Abhängigkeit von buffer.h hat aber dann habe ich es ändern, so brauche ich nicht mehr buffer.h und ich lösche Puffer .h. Das nächste Mal mache ich laufen, wird es ersticken, weil es die .d-Datei enthält, die noch macht serial.o hängen von buffer.h.

War es hilfreich?

Lösung

http://make.mad-scientist.net/papers / advanced-auto-Abhängigkeit Generation eine Beschreibung dieses genauen Problem hat, und ein paar Möglichkeiten, um ihn herum. Der erste ist ein bisschen fehlgeleitet, aber die „erweiterte“ im Wesentlichen vor Ort auf.

Andere Tipps

Zwei Möglichkeiten:

Als erstes können Sie eine Regel zu Ihrem Makefile hinzufügen die Abhängigkeit Schritt auszuführen:

.SUFFIXES: .d

%.d::
   makedepend_command_here

Wenn nicht, dann aus dem Last Resort Abschnitt der info Seite für GNU Make:

  

Zum Beispiel bei der Prüfung eines   Make-Datei, die Sie nicht interessieren, wenn die   Quelldateien enthalten reale Daten, nur   dass sie existieren. Dann könnten Sie tun   folgt aus:

 %::
         touch $@
     

verursachen alle Quelldateien benötigt   (Als Voraussetzung) geschaffen werden,   automatisch.

Wird diese Arbeit für Sie leer .d-Dateien erstellen?

Wenn Sie makepp mit der Option --rm-stale, wird es Dateien feststellen, die nicht mehr baubar und entfernen . Wenn dies ein normaler usecase für Sie ist, können Sie diese Option in .makepprc an der Wurzel des Build Baum gesetzt, und es wird immer verwendet werden.

Aber dann natürlich makepp kümmert sich um alle diese Abhängigkeit Erkennung selbst, so müssen Sie Ihr Make-Datei nicht unübersichtlich. Es ist sogar besser als Ihr Ansatz, weil sie benötigen Header in der Zeit für den Compiler holen erzeugen können, wo gcc -MM fehlschlagen würde.

Es gibt viel mehr zu makepp. Neben fast alle tun, dass GNU kann machen, gibt es viele weitere nützliche Dinge, und Sie können sogar Ihre Makefiles mit einigen Perl-Programmierung erweitern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top