目次
MSBuildとは
.NET Framework 2.0から同梱されいるビルド環境です。 Visual Studioがインストールしなくても実行できるのがいいところで、 jenkinsやbatファイルから呼び出して自動でビルドをかけたりすることができます。
参考URL
目的
複数のビルド構成のexeが必要だと、ビルド構成切り替え→ビルドする作業が何回もやらないといけない場合があり、面倒なので自動化して指定したビルド構成全部をビルドして楽するために作成する。
※どんなビルド構成のexeが必要かというと、
たとえばデバック用のexeとリリース用のexeやフルスクリーンをオンにした状態のexeとか、プロジェクトによってさまざまなexeの提出を求められることがあります。
visual studio側の準備
プロジェクトの用意
今回はvisual studio2015の
c++のwin32コンソールアプリケーションでプロジェクト作成します。
ターゲット名の変更
今回は元からあるデバックとリリースのビルド構成を使用しますが、exeの名前が同じだとわかりづらいのでデバックの方だけexeの名前を変えます。
名前はプロジェクト名_Debug.exeになります。
ソースコード
ビルド構成によって出力される文字が変わるだけのシンプルな奴です。
// ConsoleApplication1.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <cstdlib> int main() { #ifdef _DEBUG puts("Debug"); #else puts("Release"); #endif system("PAUSE"); return 0; }
MSBuildを使ったbatファイルを作成
ConsoleApplication1.slnと同じ階層に以下のbatファイルを用意します。
title %date% %time% ROM生成 @echo off rem このbatをカレントディレクトリとする---------------------------------------- cd /d %~dp0 echo masterROMを生成を開始します rem フォルダの生成------------------------------------------------------------- if exist ROM ( echo ROMフォルダは存在してます ) else ( echo ROMフォルダを生成します md ROM ) rem ビルド設定-------------------------------------------------------------------------- @Set Path=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;%PATH% rem デバックビルド実行------------------------------------------------------------------ echo デバックビルド実行します msbuild ConsoleApplication1.sln /p:Configuration=Debug /t:Rebuild /p:Platform="x86" echo Exeデータを複製 copy /y Debug\ConsoleApplication1_Debug.exe ROM\ConsoleApplication1_Debug.exe rem リリースビルド実行------------------------------------------------------------------ echo リリースビルド実行します msbuild ConsoleApplication1.sln /p:Configuration=Release /t:Rebuild /p:Platform="x86" echo Exeデータを複製 copy /y Release\ConsoleApplication1.exe ROM\ConsoleApplication1.exe exit /B
ビルド構成を変えたいときは/p:Configuration=〇〇の部分を変更すればいいです。
このbatファイルを起動すると以下のようになります。
これでbatファイルからデバックとリリースのexeが一気に作成することができました。
終わりに
今回作成したプロジェクトはgithubで公開してます。 気になったかたはどうぞ。
もしうまく起動しなかったらMicrosoft.NET\Frameworkのバージョンを確認してください。