2016-08-10 15 views
0

私は多くのプロジェクトを持つC++ソリューションを持っています。コンパイル時に、私はWin32モードでプロジェクトの一部をビルドする必要があります。次に、いくつかのシェルコマンドを実行します。次に、x64モードでいくつかのプロジェクトをビルドします。次に、さらにいくつかのシェルコマンドを実行します。最後に、Win32モードでプロジェクトをもう1つビルドします。Visual Studio - ビルドプロセスを自動化する方法は?

私はこれらをすべて自動化する方法を手動で何度もやり直すのに疲れていますか?

は私がTeamCityを使用したローカルビルドサーバーを構成した同じタスクのためのVisual Studio 2015

+1

プロジェクトの前後のビルドステップで実行できますか? – Borgleader

+1

このような複雑なケースでは、すべてを構築するPythonビルドスクリプトを書いています。それはmakeよりも、VSよりはるかに多くの制御と柔軟性をもたらします。それは先行投資のビットですが、多年にわたるプロジェクトではそれは非常に効果的です。 –

+0

@Borgleaderありがとうございます。ビルド後のイベントは私のニーズに完全に合っています。 –

答えて

0

を使用しています。それはあなたの要件を完全に満たします。ビルド構成の作成方法は、instructionです。

1

MSBuild XMLオートメーションとJenkinsの組み合わせをお勧めします。詳細:

MSBuild: Visual Studioに付属しています。 VSコマンドプロンプトにアクセスする必要があります。 VSコマンドプロンプトで、「MSBuild your_project.vcproj」と入力すると、ビルドされます。

MSBuild XMLファイル:単純なXMLファイルを作成してMSBuildに渡すことができます。これは、ビルドプロセスの編成に大きく役立ちます。大きな話題ですが、Microsoftのmakefile/buildシステム(Microsoftにはnmakeがあるにもかかわらず)とはるかに便利だと考えることができます。シェルコマンドを呼び出すために、ターゲットの定義、変数の設定、条件の設定、ビルドのパラレル化、アクションの設定ができます。非常にシンプルなものは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
    <CPPProject>your_cpp_project.sln</CPPProject> 
    <powershell_execute>powershell.exe -executionpolicy bypass -command</powershell_execute> 
    <UtilityScript>utility.ps1</UtilityScript> 
    </PropertyGroup> 

    <Target Name="Build"> 
    <Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release /p:Platform=Win32" /> 
    <Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release_x64 /p:Platform=x64" /> 
    <Exec Command="$(powershell_execute) $(UtilityScript) args" /> 
    </Target> 

    <Target Name="Clean"> 
     <!-- DO YOUR CLEANING HERE--> 
    </Target> 

</Project> 

ジェンキンス:あなたはそれをインストールしたら、それはその組み込みHTTPサーバを持っているWindowsサービスとして実行されます。 localhost:8080を使用してブラウザですばやくアクセスできます。 Jenkinsは別のトピックですが、コマンドを自動化してジョブ定義として整理するのが非常に便利です。

エクストラ醤油(PowerShellの& MSBuildの拡張):私は必要な場所あなたは、MSBuildのかジェンキンスのいずれかからコマンドを呼び出すことができますとして、あなたは常にPowerShellは(これであなたもインラインC#コード必要に応じてすることができます)私は、この有用であることが分かってきたことができます各リリース前にマイナーバージョンをインクリメントするなど、カスタムロジックを迅速かつ簡単に実装することができます.MSBuild XMLの機能性を強化するための拡張パックもあります。

ジェンキンスとTFSの代替手段:ジェンキンスは、一般に非常に便利です。 Windowsの主な欠点は、コンソール出力を色付けするのが簡単ではなかったことです。しかし、それは対処することができます。一般的に、私はそれが非常に安定していることがわかりました。一方、TFSは既にマイクロソフトのソリューションであり、ライセンスオプションについてはわかりませんが、Jenkinsの代わりになる可能性もあります。その場合、MSBuild XMLファイルにもっと頼りになります。私のためのTFS 2013の短所の1つは、Microsoftのhttp.sysとのいくつかの競合のために、ネットワーク運用上常に正確に働いているとは限らず、かなり失望していました。それは中央のソリューションであるため、I`dは非常にこれはあなたのビルドシステムにも簡単に呼び出し可能になりますように、コマンドを経由してのMSBuild XMLファイルで、あなたのロジックのほとんどを実装するお勧めします:しかし、私はTFS2015

一般的な提案をチェックしていませんラインとジェンキンス、TFSや他の人のような、異なるシステム間で

その他の注意事項切り替えることも簡単に:それは唯一のMSVC 2015の場合MSVC2015は、スタンドアロンを持っているよう

  1. することは、あなたはVisualStudioををインストールしないかもしれませんビルド:https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/

  2. もしあなたがJenkinsのやり方をすれば、まず処理する必要があるのはVisual Studioコマンドプロンプトにアクセスすることです。その場合は次を参照してください:How do I write a build batch script that runs vcvars32.bat, and then continues with the build?

関連する問題