2009-07-30 3 views
0

Ich möchte das Makefile für Firefox zurückverfolgen, so dass ich den endgültigen GCC-Befehl erhalten kann, der zum Kompilieren der C++ - Dateien verwendet wird. Wie kann ich das machen?Firefox make file

+0

Die firefox-Makefiles enthalten das Symbol "$ (CXX)" und ich leitete die Ausgabe des Makefiles in eine Textdatei. Die Datei enthält 17500 Zeilen, aber keine Zeile enthält die gcc-Befehle, die die cpp-Dateien kompilieren – Jaelebi

Antwort

0

Können Sie die Ausgabe von make in eine Datei umleiten und dann mit einem Texteditor nach der gewünschten Zeile suchen?

1

Der übliche Trick dafür ist, gcc durch ein Programm zu ersetzen, das die GCC-Befehlszeile liest, speichert es in irgendeiner Protokolldatei, damit es überprüft werden kann, und startet dann gcc mit der Befehlszeile. Sie können dies tun, indem Sie "gcc.exe" in Ihrem Entwicklungsverzeichnis durch dieses Sprungbrett-Programm ersetzen.

+0

Wie genau würde ich das tun? – Jaelebi

+0

Sie müssen ein benutzerdefiniertes Programm mit dem Namen "gcc.exe" schreiben (mit dem C-Compiler, sagen), die die Befehlszeile usw. liest. Dies ist kein kleines Programm, aber es ist auch nicht sehr groß. Das Ersetzen der ursprünglichen gcc.exe ist eine Sache des Bewegens des Originals zu, sagen wir, "gcc_original.exe" und Parken Ihrer Version, wo gcc war; offensichtlich muss Ihr Steuerelement die Kontrolle an gcc_original.exe zusammen mit der ursprünglichen Befehlszeile übergeben. Sehen Sie sich die verschiedenen Forking-Befehle an, um den richtigen zu finden (ich habe das vor 10 Jahren gemacht und habe die genauen Anrufe vergessen, die Sie brauchen). Erwarte nicht, dass dies ein 20-minütiger Job ist. –

+1

Obwohl dies eine nützliche Technik ist, erscheint es für diese Situation als Overkill, weil "make" jede Befehlszeile, die es ausführt, auf die Konsole druckt. –

2

Wenn Sie dort eine Zeile finden, die mit "@ $ (CXX)" oder "@ g ++" beginnt, ändern Sie die Zeile in "$ (CXX)" oder "g ++" - löschen Sie also die "@" -Symbol von der Linie. Wenn ein "@" - Symbol am Anfang eines Befehls in einem Makefile angezeigt wird, bewirkt dies, dass Make den Befehl nicht vor der Ausführung ausgibt. Durch das Löschen des "@" -Symbols wird die erweiterte Form der Zeile wiederholt, bevor der Befehl aufgerufen wird.

Ich habe mir Firefox Makefile nicht angesehen, also ist es mehr als möglich, dass sie vordefinierte Musterregeln für die Erstellung des Codes verwenden. In diesem Fall werden keine Zeilen mit "$ (CXX)" angezeigt. Wenn dies der Fall ist, müssen Sie die Regeln überschreiben, damit die Standard-Erstellungsregeln die Befehle vor der Ausführung widerspiegeln.

Weitere Informationen zum Überschreiben Makefile Musterregeln aufbauen, finden Sie auf diesen Link:

http://www.gnu.org/software/make/manual/make.html#Pattern-Rules

+0

+1, guter Punkt über die Verwendung von @. –

+0

Es gibt keine "$ (cxx)" Art von Tags oder Zeilen im Makefile. – Jaelebi

+0

In diesem Fall müssen Sie die Musterregeln überschreiben, wie in (nur ein Wort der Vorsicht, das folgende wird aufgrund der Einschränkungen von Stack Overflow-Kommentaren nicht richtig Platz gehen): % .o:% .cpp $ (CXX) $ <-o $ @ –

1

Hier ist das Make-Regel, die C++ Dateien kompiliert: http://hg.mozilla.org/mozilla-central/annotate/c1ab8650e0ce/config/rules.mk#l1391

Wenn alles, was Sie tun wollen, ist Ersetze den Compiler, du kannst (in deinem mozconfig oder auf der configure-Kommandozeile) CXX = "whatever" setzen.

+0

Ich möchte nicht den Compiler ersetzen, will nur sehen, was gcc ... Befehle die Makefiles ausführen. Da Firefox-Makefiles andere Makefiles aufrufen, sind sie recht komplex. – Jaelebi

+0

Dann wollen Sie sich rules.mk ansehen, dort leben alle tatsächlichen make-Regeln. –

Verwandte Themen