Wie kann ich gmake dazu bringen, mir eine Liste aller enthaltenen Makefiles anzuzeigen?

Wie kann ich gmake dazu bringen, mir eine Liste aller enthaltenen Makefiles anzuzeigen?

Ich habe ein großes Durcheinander eines Makefile-Netzwerks geerbt, das selbst von einem anderen Projekt übernommen wurde, mit Makefiles, die überall enthalten waren. Ich versuche, eine einfache Änderung vorzunehmen, ohne das Ganze auszuweiden (so verlockend das auch ist, ich habe im Moment einfach keine Zeit dafür).

Gibt es eine Möglichkeit, ein vollständiges Makefile aus gmake herauszukitzeln,dh, mit allen bereits enthaltenen Dateien? Ich weiß, wie man die Datenbank auslagert, aber das ist bei all dem überflüssigen Müll, der geladen wird, genauso schwer nachzuvollziehen.

Antwort1

Neuauflagehat einige sehr interessante Debug-Ausgaben.

Antwort2

Was Sie suchen, ist ein Äquivalent zu cc -Efor make. Mir ist kein solches Äquivalent bekannt. Die Verwendung externer Tools hilft in vielen, aber nicht allen Fällen, daSekundärerweiterung.

Aber vielleicht bringt Sie das einen Schritt weiter. Fügen Sie am Ende des anfänglichen Makefiles diese Regel hinzu:

.PHONY: printMakefiles
printMakefiles:
        echo $(MAKEFILE_LIST)

Sie können nun herausfinden, welche Makefiles eingebunden wurden, indem Sie

make printMakefiles

Bitte beachten Sie, dass dies nicht 100 % zuverlässig ist, da bedingte Einschlüsse vorliegen können.

Antwort3

Ich bin nicht sicher, ob das rekursiv funktioniert, aber wie wäre es mit etwas wie:

strace -e trace=open make | grep -i makefile

Antwort4

Bearbeiten Sie die Makefileaufgerufene Hauptdatei. Fügen Sie diese Zeile am Ende (oder zumindest nach der letzten includein der Datei) hinzu:

$(info MAKEFILE_LIST == $(MAKEFILE_LIST))

Wenn Sie makedies jetzt ausführen Makefile, wird vor dem Versenden der Regeln eine Liste der enthaltenen Dateien erstellt.

verwandte Informationen