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
Antwort
Können Sie die Ausgabe von make
in eine Datei umleiten und dann mit einem Texteditor nach der gewünschten Zeile suchen?
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.
Wie genau würde ich das tun? – Jaelebi
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. –
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. –
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
+1, guter Punkt über die Verwendung von @. –
Es gibt keine "$ (cxx)" Art von Tags oder Zeilen im Makefile. – Jaelebi
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 $ @ –
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.
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
Dann wollen Sie sich rules.mk ansehen, dort leben alle tatsächlichen make-Regeln. –
- 1. Android NDK Make File und Maven Build Issues
- 2. jQuery: Simulation eines Klicks auf ein <input type = "file" /> funktioniert nicht in Firefox?
- 3. warum "make" vor "make install"
- 4. Entfernen Präfix mit make
- 5. Make datalist erforderlich
- 6. in Make-Datei Make Regel immer erfolgreich
- 7. BSD Make und GNU Make kompatibles Makefile
- 8. Suppress make Regel Fehlerausgabe
- 9. Firefox Addon Unterzeichnung Fehler
- 10. Laravel File Upload Validation
- 11. Caffe Fehler make test
- 12. Make namedtuple kwargs
- 13. Make Alias-Skript Fehler
- 14. make fullScreenVideoView
- 15. Make Globale Objekte in Grunt
- 16. Wie mache ich einen file: // Hyperlink, der sowohl in IE als auch in Firefox funktioniert?
- 17. tabindex und <input type = "file" /> verschiedenen in Firefox und IE
- 18. input type = „file“ funktioniert nicht in Firefox, wenn sie mit einem Knopf
- 19. Virtual File System Speicherblock Erstellung
- 20. make config Makefile auf Windows
- 21. <a href="http://file://///> convert file:// to file// ---remove colon
- 22. Keine Regel Ziel Make-Datei
- 23. Informatica Flat File in Flat File gibt Angebote
- 24. Verwenden Sie Intellij File Watcher nur auf Open File
- 25. cpanm perl Modul Installation fehlgeschlagen 'make' und 'make test'
- 26. make os.listdir() Liste vollständige Pfade
- 27. Selen mit Firefox Problem - Firefox reagiert nicht trotz Updates
- 28. "Beschneidungsdatei" - ist das mein Compiler oder GNU Make? Ein Ziel in meinem Make-Datei
- 29. getline und file handling
- 30. in einem File-Objekt
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