Visual C++ 2005 und separate Kompilierung



  • Hallo,

    der integrierte Compiler kompiliert ja bei einem Visual C++ Projekt alle Übersetzungseinheiten auf einmal. Also

    cl /flags_blabla foo.cpp bar.cpp foobar.cpp ...
    

    Das ist natürlich blöd, wenn man für die Objektdateien verschiedene Ausgabeverzeichnisse angeben will. ZB weil man zweimal eine Datei foobar.cpp hat, einmal im Verzeichnis foo und einmal im Verzeichnis bar.
    Kann man dem integrierten Compiler irgendwie klar machen, dass er jede Übersetzungseinheit separat kompilieren soll? Also

    cl /flags_blabla foo.cpp
    cl /flags_blabla bar.cpp
    cl /flags_blabla foobar.cpp
    cl /flags_blabla ...
    

    Letztendlich könnte ich "Custom Build Rules..." entsprechend verwenden, was wohl auch darauf hinauslaufen wird, sofern es nicht anderweitig funktioniert. Ich würde trotzdem erst wissen, ob es irgendwie mit Bordmitteln möglich ist.



  • Makefiles?
    Aber Dein Problem hab ich nicht ganz verstanden...

    Du kannst auch "Response-Files" verwenden, und diese dem "cl" übergeben... (was ja die IDE macht).



  • Jochen Kalmbach schrieb:

    Makefiles?

    Nein, es soll schon über die IDE gemacht werden.

    Jochen Kalmbach schrieb:

    Du kannst auch "Response-Files" verwenden, und diese dem "cl" übergeben...

    Nein, auch das nicht. Ich will cl überhaupt nichts explizit sagen. Ich will nur die IDE entsprechend konfigurieren, und diese soll dann cl entsprechend handeln.



  • Ich hab Dein Problem nicht ganz verstanden...

    Du hast zwei "foo.cpp" Dateien, oder?

    Wenn zwei Dateien mit dem gleichen Namen im Projekt existieren wird die eine obj-Datei mit einer Zahl hinten hochgezählt... also aus
    foo.cpp wird foo.obj
    und aus der zweiten
    foo.cpp wird foo1.obj

    Oder was ist Dein Problem?



  • Jochen Kalmbach schrieb:

    Wenn zwei Dateien mit dem gleichen Namen im Projekt existieren wird die eine obj-Datei mit einer Zahl hinten hochgezählt... also aus
    foo.cpp wird foo.obj
    und aus der zweiten
    foo.cpp wird foo1.obj

    Hehe, tatsächlich. 😃
    Seit wann ist denn das so? Seit der 2005er Version? Ich kann mich nur erinnern, dass es früher Probleme gab, weil dann die erste .obj Datei mit der zweiten überschrieben wurde.
    Naja, damit hat sich das Problem jedenfalls verflüchtigt. Danke für den Tipp.



  • Beim Debuggen kommt VC2005 leider noch immer mit Quelldateien gleicher Namen durcheinander (es wird beim Debuggen der falsche Quellcode angezeigt). 😉

    Im übrigen kann man die Kompiliereinstellungen für jede Datei separat angeben und so die globale Einstellung übergehen. Den Ordner/Namen der Objektdatei müsste man so ebenfalls ändern können.



  • Neku schrieb:

    Beim Debuggen kommt VC2005 leider noch immer mit Quelldateien gleicher Namen durcheinander (es wird beim Debuggen der falsche Quellcode angezeigt). 😉

    Hast Du da ein kleines Beispielprojekt? Würde mich mal interessieren...



  • Jochen Kalmbach schrieb:

    Neku schrieb:

    Beim Debuggen kommt VC2005 leider noch immer mit Quelldateien gleicher Namen durcheinander (es wird beim Debuggen der falsche Quellcode angezeigt). 😉

    Hast Du da ein kleines Beispielprojekt? Würde mich mal interessieren...

    Bei meinem Projekt war das etwas anders - da habe ich zwei DLLs gehabt und von beiden den Quellcode. Beim Debuggen der einen DLL wurde die Quelldatei der anderen DLL angezeigt, da .pdb-Dateien vorhanden waren und diese wohl nur relative Pfade enthalten (in diesem Fall beide .\Main.cpp).


Anmelden zum Antworten