【MSBuild】ビルド構成の切り替えを自動化してまとめてビルドする

目次

MSBuildとは

.NET Framework 2.0から同梱されいるビルド環境です。 Visual Studioがインストールしなくても実行できるのがいいところで、 jenkinsやbatファイルから呼び出して自動でビルドをかけたりすることができます。

参考URL

www.atmarkit.co.jp

目的

複数のビルド構成のexeが必要だと、ビルド構成切り替え→ビルドする作業が何回もやらないといけない場合があり、面倒なので自動化して指定したビルド構成全部をビルドして楽するために作成する。

※どんなビルド構成のexeが必要かというと、

たとえばデバック用のexeリリース用のexeやフルスクリーンをオンにした状態のexeとか、プロジェクトによってさまざまなexeの提出を求められることがあります。

visual studio側の準備

プロジェクトの用意

今回はvisual studio2015の

c++のwin32コンソールアプリケーションでプロジェクト作成します。

f:id:Brave345:20200207155705p:plain

ターゲット名の変更

今回は元からあるデバックとリリースのビルド構成を使用しますが、exeの名前が同じだとわかりづらいのでデバックの方だけexeの名前を変えます。

名前はプロジェクト名_Debug.exeになります。

f:id:Brave345:20200207155718p:plain

ソースコード

ビルド構成によって出力される文字が変わるだけのシンプルな奴です。

// 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ファイルを起動すると以下のようになります。

f:id:Brave345:20200207155744p:plain

これでbatファイルからデバックとリリースのexeが一気に作成することができました。

終わりに

今回作成したプロジェクトはgithubで公開してます。 気になったかたはどうぞ。

github.com

もしうまく起動しなかったらMicrosoft.NET\Frameworkのバージョンを確認してください。