2009-06-25 9 views
11

私はCygwinを使ってWindows上で自動ビルドシステムをセットアップしようとしています。とりわけ、いくつかのVisual C++ソリューションを構築できる必要があります。私はdevenvに必要な環境変数を設定するスクリプトを用意しています.bashで 'devenv'と入力すると、Visual Studio IDEが起動します。これまでのところ問題はありません。CygwinからVisual Studio 9.0ソリューションをビルドしてビルド出力を得るには?

私はこの問題は、それが私のビルド出力を示していないことである

 
$ devenv mysolution.sln /build Debug 

を入力しても、Cygwinのbashプロンプトからソリューションを構築することができています。実際、ビルドが成功したかどうかは私には分かりません。コマンドは単純に終了し、私はプロンプトを返します。次に、出力ディレクトリに移動し、実行可能ファイルが作成されたかどうかを確認できますが、ビルドシステムではエラーをgrepできるようにしたいと考えています。

私は間違っていますか? Windowsシェルでdevenvを実行すると、デバッグ出力が表示されますが、cygwinでは表示されません。どこに送られているのですか、どうすれば元に戻すことができますか?

答えて

11

cygwinは.comファイルを見つけて実行しますか?

2つのdevenv実行可能であり、一つはGUIモードアプリケーションで他の実行、devenv.exe用STDIN、stdoutとstderrプロキシを処理するコンソール・モード・アプリケーションであるdevenv.comあります。 devenv.exeがcygwinがロードしているものであれば、stdin/stdoutのものはありません。 devenv.comがロードされている場合は、devenv.exeを起動し、stdoutの内容をコンソールにプロキシします。

devenv.comを実行するよう明示的に指定しているとしますか?

+0

それです!ありがとう! – Dima

2

回避策が見つかりました。

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

は、ビルド出力をmylog.txtにダンプします。これは、自動ビルドにさらに便利です。私はまだ、なぜ出力が画面に表示されないのか不思議です。

3

MSBuildとお考えですか? msbuildを使ってVSソリューションを変更せずにビルドすることができ、stdoutから出力を吐き出します。コマンドは次のようになります。

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

のMSBuildをMSビルドの自動化を行うために設計されたツールなので、DEVENV.EXEを実行しているよりも少し良くあなたの問題を合うことがあります。

+0

それはおそらく私が必要とするすべてを行うわけではありません。 VSソリューションに加えて、VSを使用していない組み込みプラットフォーム向けのプロジェクトを構築する必要があります。この時点で私が必要とするのは、すべての構成を構築し、何かが壊れていれば電子メールを受け取ることができることです。だから、MSBuildは同時に強力すぎるし、私が必要とするほど柔軟ではないようだ。 – Dima

+0

MSBuildは非常に強力で柔軟性があります。それが箱から出てこない場合は、特別な機能を追加するhttp://sdctasks.codeplex.com/やhttp://msbuildtasks.tigris.org/などのコミュニティタスクがあります。自分の仕事。また、ビルドプロセス全体で使用しなくても、少なくともMS製品によってコンパイルされたパーツにとっては便利です。 – heavyd

1

最後に聞いたように、2008年のmsbuildはC++プロジェクトを処理できませんでした。私は2010年にそれができると思います。

関連する問題