5

Sto provando a utilizzare un evento di pre-build in Visual Studio (VS 2005 per essere specifico) per eseguire uno script Python che genererà automaticamente un file .cpp file. Il problema che sto incontrando è che il compilatore non sembra sapere che questo file è sporco e deve essere ricostruito fino al dopo il la compilazione è terminata, il che significa che ho bisogno di creare la soluzione due volte - una volta per generare questo file e poi ancora una volta in modo che questo file venga effettivamente compilato.Codice C++ auto-generante in un evento pre-build utilizzando Visual Studio

senza sapere molto circa il funzionamento interno del compilatore C++, la mia ipotesi ingenua è che fa un elenco di file sporchi che devono essere ricompilati prima l'evento pre-compilazione viene eseguito, quindi manca questa auto-generato file, in quanto non è stato toccato fino a dopo l'evento pre-build.

C'è un modo per informare il compilatore che è necessario ricompilare questo file se l'evento pre-build lo modifica?

+0

Anche io ho avuto questo problema e non sono mai riuscito a risolverlo. Ho provato a impostare la data nel passato come parte dell'evento pre-build, ho provato a impostare le date su altri file e ad eliminare i file oggetto già compilati e, ad esempio, nulla sembrava funzionare. – SoapBox

+0

Tutto quello che ho inventato è far sì che l'eseguibile di pre-build rilevi che è cambiato qualcosa. Vedi questa mia domanda correlata: http://stackoverflow.com/questions/528494/use-domain-specific-language-files-inside-c-project –

+0

In realtà l'eseguibile a cui mi riferisco è utilizzato in una regola di compilazione personalizzata –

risposta

5

Io uso msvc 6.

Prova ...

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. 

Questo è come lo facciamo con l'Oracle Pro * C preprocessore. Funziona bene.

+0

Ho fatto qualcosa di simile a questo con il T4 Transforms in VS2008 e funziona benissimo. – MrSlippers

2

Non è qualcosa che non ho mai fatto ma è possibile provare a richiamare il compilatore (cl.exe) direttamente dall'evento pre-build.