2009-06-25 14 views
11

Sto provando a configurare un sistema di compilazione automatizzato su Windows utilizzando Cygwin. Tra le altre cose, deve essere in grado di creare diverse soluzioni di Visual C++. Ho uno script che imposta le variabili di ambiente necessarie per DEVENV e, se digito "DEVENV" in BASH, viene richiamato l'IDE di Visual Studio. Nessun problema finora.Come creare una soluzione di Visual Studio 9.0 da Cygwin e ottenere l'output di build?

Sono anche in grado di costruire una soluzione dal prompt di bash di cygwin digitando

 
$ devenv mysolution.sln /build Debug 

Il problema è che non mi sta mostrando l'output di generazione. In effetti, non mi dice nemmeno se la costruzione ha avuto successo. Il comando finisce semplicemente, e torno alla richiesta. Quindi posso andare nella directory di output e controllare se l'eseguibile è stato creato o meno, ma per un sistema di build voglio essere in grado di commettere errori.

Cosa sto sbagliando? Posso vedere l'output di debug quando eseguo Devenv nella shell di Windows, ma non in Cygwin. Dove viene inviato e come posso recuperarlo?

risposta

11

cygwin troverà ed eseguirà i file .com?

Ci sono 2 devenv eseguibili, uno è devenv.com che è un'applicazione in modalità console che gestisce stdin, stdout e stderr proxy per l'altro eseguibile, devenv.exe, che è un'applicazione in modalità GUI. Se devenv.exe è ciò che sta caricando cygwin, allora non ci sarà roba stdin/stdout. Se viene caricato devenv.com, è necessario avviare devenv.exe durante il proxy della roba di stdout sulla console.

Forse se si specifica esplicitamente che devenv.com debba essere eseguito?

+0

Questo è tutto! Grazie! – Dima

2

Ho trovato una soluzione alternativa.

 
devenv mysolution.sln /build Debug /out mylog.txt 

permette di scaricare le output di generazione in mylog.txt, che è ancora più conveniente per build automatizzato. Sono ancora curioso di sapere perché l'output non viene visualizzato sullo schermo, però.

3

Avete considerato l'utilizzo di MSBuild? È possibile utilizzare msbuild per creare soluzioni VS senza modifiche e sputa l'output sullo stdout. Il comando sarebbe simile:

msbuild mysolution.sln /t:Build /p:"Configuration=Debug" /p:"Platform=Win32" 

MSBuild è lo strumento che MS progettato per fare automatizzato costruisce, quindi potrebbe andare bene il problema un po 'meglio che correre il devenv.exe.

+0

Questo probabilmente non farà tutto ciò di cui ho bisogno. Inoltre per le soluzioni VS devo costruire progetti per una piattaforma embedded, che non usano VS. A questo punto tutto ciò di cui ho bisogno è essere in grado di costruire tutte le configurazioni e ricevere un'email se qualcosa è rotto. Quindi sembra che MSBuild sia allo stesso tempo troppo potente e non abbastanza flessibile per ciò di cui ho bisogno. – Dima

+0

MSBuild è estremamente potente e flessibile. Se non lo fa subito, ci sono attività della comunità come http://sdctasks.codeplex.com/ e http://msbuildtasks.tigris.org/ che aggiungono funzionalità extra, oppure puoi sempre scrivere il tuo proprio compito. E anche se non lo usi per l'intero processo di compilazione, è almeno utile per le parti compilate dai prodotti MS. – heavyd

1

l'ultima volta che ho sentito, msbuild in 2008 non ha potuto gestire i progetti C++. Penso che possa a vs 2010.

Problemi correlati