Ich habe ein großes Durcheinander eines Makefile-Netzwerks geerbt, das selbst von einem anderen Projekt geerbt wurde, wobei Makefiles überall enthalten waren. Ich versuche, eine einfache Änderung vorzunehmen, ohne das Ganze zu entkernen (verlockend, obwohl ich gerade keine Zeit habe).
Gibt es eine Möglichkeit, ein vollständiges Makefile aus gmake herauszuholen, dh mit allen enthaltenen Dateien, die bereits enthalten sind? Ich weiß, wie man die Datenbank entleert, aber das ist mit all dem überflüssigen Müll, der geladen wird, genauso schwer zu verfolgen.
Antworten:
Remake hat einige sehr interessante Debug-Ausgaben.
quelle
Ich bin mir nicht sicher, ob das rekursiv funktioniert, aber was ist mit so etwas wie:
quelle
-f
Strace für folgende Kinder auf Gabel hinzufügen ...Es scheint, dass
make
dies keine einfache Möglichkeit bietet, aber vielleicht reicht es aus, wenn Sie alleinclude
Anweisungen aus allen Makefiles wie folgt abrufen:quelle
make
und eine Nachricht hinzuzufügen, die gedruckt wird, wenn eineinclude
Direktive verarbeitet wird.Was Sie suchen ist ein Äquivalent
cc -E
fürmake
. Mir ist ein solches Äquivalent nicht bekannt. Die Verwendung externer Tools hilft in vielen, aber nicht allen Fällen aufgrund der sekundären Erweiterung .Aber vielleicht bringt Sie das einen Schritt näher. Fügen Sie am Ende des ersten Makefiles diese Regel hinzu:
Sie können jetzt herausfinden, welche Makefiles enthalten waren, indem Sie ausführen
Bitte beachten Sie, dass dies nicht 100% zuverlässig ist, da es bedingte Einschlüsse geben kann.
quelle