5

Ich versuche, ein Pre-Build-Ereignis in Visual Studio (VS 2005) zu verwenden, um ein Python-Skript auszuführen, das automatisch eine .cpp generiert Datei. Das Problem ist, dass der Compiler scheint nicht zu wissen, dass diese Datei schmutzig ist und muss neu erstellt werden, bis nach der Build abgeschlossen ist, was bedeutet, dass ich die Lösung zweimal erstellen muss - einmal, um diese Datei zu generieren, und dann noch einmal, so dass diese Datei tatsächlich kompiliert wird.Automatisches Generieren von C++ - Code in einem Pre-Build-Ereignis mit Visual Studio

Ohne viel über das Innenleben der C++ Compiler, meine naive Vermutung zu wissen ist, dass es eine Liste der schmutzigen Dateien macht die vor das Pre-Build-Ereignis läuft neu kompiliert werden müssen, so ist es diese automatisch generieren vermisst Datei, da sie erst nach dem Pre-Build-Ereignis berührt wurde.

Gibt es eine Möglichkeit, den Compiler zu informieren, dass diese Datei neu kompiliert werden muss, wenn das Pre-Build-Ereignis dies ändert?

+0

Ich hatte dieses Problem auch und konnte es nie lösen. Ich habe versucht, das Datum in die Vergangenheit als Teil des Prebuild-Ereignisses zu setzen, habe versucht, Daten auf andere Dateien zu setzen und bereits kompilierte Objektdateien zu löschen und so schien nichts zu funktionieren. – SoapBox

+0

Alles, was ich habe, ist, die ausführbare Pre-Build-Datei erkennen zu lassen, dass sie etwas verändert hat. Siehe diese verwandte Frage von mir: http://stackoverflow.com/questions/528494/use-domain-specific-language-files-inside-c-project –

+0

Tatsächlich wird die ausführbare Datei, auf die ich mich beziehe, in einer benutzerdefinierten Erstellungsregel verwendet –

Antwort

5

Ich benutze msvc 6.

Versuchen ...

Put the python script into the project 
give it a custom build step that invokes python on it, 
to create the cpp file. 

Add the cpp file to your project and do a rebuild all. 

Dies ist, wie wir es mit dem Oracle Pro * C Präprozessor tun. Es funktioniert gut.

+0

Ich habe etwas ähnliches mit dem T4 Transforms in VS2008 getan und es funktioniert super. – MrSlippers

2

Es ist nicht etwas, das ich jemals getan habe, aber Sie könnten versuchen, den Compiler (cl.exe) direkt von Ihrem Pre-Build-Ereignis aufzurufen.

Verwandte Themen