Monotone 、 CMake 、Visual Studio Express 2008、およびカスタムテストを使用している大規模なC++ソリューションのチェックアウト、ビルド、配布、テスト、およびコミットサイクルのスクリプトを作成しています。
他のすべての部分は非常に簡単に見えますが、GUIを取得せずにVisual Studioソリューションをコンパイルする方法がわかりません。
スクリプトはPythonで記述されていますが、os.systemを呼び出すだけでよい答えです。
私は2つの方法を知っています。
方法1
最初の方法(私が好む)は、 msbuild を使用することです。
msbuild project.sln /Flags...
方法2
次も実行できます。
vcexpress project.sln /build /Flags...
Vcexpressオプションはすぐに戻り、出力を出力しません。それがスクリプトに必要なものだと思います。
DevEnvはVisual Studio Express 2008と共に配布されていないことに注意してください(最初に同様の問題が発生したときに、それを把握しようとして多くの時間を費やしました)。
したがって、最終結果は次のようになります。
os.system("msbuild project.sln /p:Configuration=Debug")
また、msbuildとvcexpressはデフォルトではシステムパスにないため、環境変数が正しいことを確認する必要があります。 Visual Studioビルド環境を開始し、そこからスクリプトを実行するか、Pythonのパスを変更します( os.putenv を使用)。
MSBuildは通常動作しますが、以前は困難に直面していました。あなたはより幸運があるかもしれません
devenv YourSolution.sln /Build
正直に言うと、2セントを追加する必要があります。
msbuild.exeでできます。 msbuild.exeには多くのバージョンがあります。
C:\ Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe C:\ Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
C:\ Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe C:\ Windows\Microsoft.NET\Framework\v3.5\msbuild.exe C:\ Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
必要なバージョンを使用してください。基本的に、最後のものを使用する必要があります。
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
だからそれを行う方法。
COMMANDウィンドウを実行します
Msbuild.exeへのパスを入力します
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
「C:\ Users\Clark.Kent\Documents\visual studio 2012\Projects\WpfApplication1\WpfApplication1.sln」
ソリューションパスの後に必要なフラグを追加します。
ENTERを押します
以下のような可能性のあるすべてのフラグに関するヘルプが得られることに注意してください
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe/help
他の人が指摘したようにmsbuild
を使用することでうまくいきましたが、それ以上のことをする必要がありました。まず、msbuild
はコンパイラーにアクセスする必要があります。これは、次を実行することで実行できます。
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
それからmsbuild
は私の$ PATHになかったので、明示的なパスで実行しなければなりませんでした:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln
最後に、私のプロジェクトは$(VisualStudioDir)
のようないくつかの変数を利用していました。これらはmsbuild
によって設定されないようですので、/property
オプションを使用して手動で設定する必要がありました。
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln
その行により、ついにプロジェクトをコンパイルすることができました。
ボーナス:「無料」のGUIベースのVisual Studio Communityエディションのように、コマンドラインツールを使用してから30日間は登録が不要なようです。マイクロソフトの登録要件が整っているため、そのバージョンはほとんど無料です。もしあれば、Facebookで無料...
msbuild "C:\path to solution\project.sln"
DEVENVは多くの場合うまく機能しますが、WIXPROJでWIXインストーラーをビルドすると、Outログに「CATASTROPHIC」エラーが表示されます。
これは動作します:MSBUILD /Path/PROJECT.WIXPROJ/t:Build/p:Configuration = Release