2009-06-25 91 views
11

我正試圖在Windows上使用Cygwin設置自動構建系統。除此之外,它需要能夠構建多個Visual C++解決方案。我有一個腳本,用於設置devenv所需的環境變量,如果我在bash中鍵入'devenv',它將啓動Visual Studio IDE。目前沒有問題。如何從Cygwin構建Visual Studio 9.0解決方案並獲取構建輸出?

我還可以通過鍵入

 
$ devenv mysolution.sln /build Debug 

問題構建從Cygwin的bash提示符的解決方案是,它沒有顯示我的構建輸出。事實上,它甚至不告訴我該構建是否成功。該命令完成後,我回到提示。然後我可以進入輸出目錄,並檢查是否創建了可執行文件,但對於構​​建系統,我希望能夠查找錯誤。

我在做什麼錯?當我在windows shell中運行devenv時,我可以看到調試輸出,但不能在cygwin中運行。它在哪裏發送,我如何恢復它?

回答

11

cygwin會查找並運行.com文件嗎?

有2個devenv可執行程序,一個是devenv.com這是一個控制檯模式的應用程序,處理標準輸入,輸出和錯誤代理的其他可執行文件,devenv.exe,這是一個GUI模式的應用程序。如果devenv.exe是cygwin加載的內容,那麼將不會有stdin/stdout的東西。如果正在加載devenv.com,它應該啓動devenv.exe,同時將stdout內容代理到控制檯。

也許如果你明確指定應該運行devenv.com

+0

就是這樣!謝謝! – Dima 2009-06-25 23:34:53

2

我找到了解決方法。

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

會將構建輸出轉儲到mylog.txt,這對於自動構建來說更加方便。不過,我仍然很好奇爲什麼輸出結果沒有顯示在屏幕上。

3

您是否考慮過使用MSBuild?你可以使用msbuild來構建VS解決方案而不做任何修改,並且它將輸出輸出到標準輸出。該命令看起來是這樣的:

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

的MSBuild是MS專門做自動化生成,所以它可能適合你的問題不是運行devenv.exe的好一點的工具。

+0

這可能不會做我需要的一切。另外對於VS解決方案,我必須爲不使用VS的嵌入式平臺構建項目。在這一點上,我需要的是能夠構建所有配置並在發生任何問題時收到電子郵件。所以看起來MSBuild同時功能太強大,而且不夠靈活,無法滿足我的需求。 – Dima 2009-06-26 00:00:15

1

上次我聽說,vsbuilder中的msbuild無法處理C++項目。我認爲它可以在2010年。

相關問題