MSBuildによるコマンドラインビルド

Windowsのタスクスケジューラ等を使ってビルドを行う場合、非ログイン状態で SOLID-IDE (partner-ide.com/.exe) のコマンドラインビルドを使用すると ビルドに失敗します。

MSBuildを使用することで、非ログイン状態でもビルドが可能になります。

注釈

MSBuildはSOLIDと一緒にインストールされますので、追加インストールは不要です。

実行前の設定

環境変数の設定

PATH

MSBuildの実行可能ファイルへのパスを設定:

set PATH=C:\Program Files (x86)\MSBuild\12.0\Bin;%PATH%
KMCTargetsPath

SOLID向けのMSBuildの定義パスを指定:

set KMCTargetsPath=C:\Program Files (x86)\KMC\SOLID-IDE\Bin\MSBuild\
EXEGCC_STD_ARM_GCCVER

使用するコンパイラバージョンを指定

32bitプラットフォームの場合:

for /f %%i in ('%EXEGCC_STD_ARM_ROOTDIR%\bin\gcc -dumpversion') do set EXEGCC_STD_ARM_GCCVER=%%i

64bitプラットフォームの場合:

for /f %%i in ('%EXEGCC_STD_AARCH64_ROOTDIR%\bin\gcc -dumpversion') do set EXEGCC_STD_AARCH64_GCCVER=%%i

ソリューションファイルの拡張子変更

.ptsln のままでは、MSBuildがソリューションファイルだと認識できないので、拡張子を .sln に変更します:

() ren sample1.ptsln sample1.sln

ビルドの実行

上記の事前準備を行うことで、MSBuildによるコマンドラインビルドが可能になります。ビルドを行うコマンドは以下の通りです。:

msbuild.exe /t:build /p:Configuration=[ソリューション構成名];Platform=[プラットフォーム名] <ソリューションファイル名> /m

注釈

/m オプションは必須ではありませんが、このオプションにより、マルチコアCPU環境では 複数のプロジェクトが並行ビルドされ、ビルドが高速になる場合があります。 ただし、PCの構成やビルドを行うファイルのあるディスクの構成に依存します。

実行コマンドの指定

/t:build の代わりに /t:rebuild の指定でソリューションのリビルド、 /t:clean の指定でソリューションのクリーンが行われます

ソリューション構成名

ソリューションのビルドで使用される名前(Debug, Debug_clang など)を指定します。

プラットフォーム名

ソリューションのビルドで使用されるプラットフォーム (KMC_SOLID_v7A_ARMKMC_SOLID_v8A_AARCH64) を指定します。

ビルド実行バッチのサンプル

事前準備を含めたビルドを実行するバッチのサンプルです

@echo off
REM %1 : ソリューションファイル名
REM %2 : ビルド構成
REM %3 : プラットフォーム
setlocal

set PATH=C:\Program Files (x86)\MSBuild\12.0\Bin;%PATH%
set KMCTargetsPath=C:\Program Files (x86)\KMC\SOLID-IDE\Bin\MSBuild\

for /f %%i in ('%EXEGCC_STD_ARM_ROOTDIR%\bin\gcc -dumpversion') do set EXEGCC_STD_ARM_GCCVER=%%i
for /f %%i in ('%EXEGCC_STD_AARCH64_ROOTDIR%\bin\gcc -dumpversion') do set EXEGCC_STD_AARCH64_GCCVER=%%i

set tempsln=%~dpn1.sln
copy %1 %tempsln%

msbuild.exe /t:rebuild /p:Configuration=%2;Platform=%3 %tempsln% /m

del  %tempsln%
Endlocal