MSBuildによるコマンドラインビルド
Windowsのタスクスケジューラ等を使ってビルドを行う場合、非ログイン状態で SOLID-IDE(PARTNER-IDE.COM/.EXE)のコマンドラインビルドを使用すると ビルドに失敗します。
MSBuild.exe を使用することで、非ログイン状態でもビルドが可能になります。
注釈
MSBuild.exeはSOLIDと一緒にインストールされますので、追加インストールは不要です。
実行前の設定
環境変数の設定
PATH
MSBuild.exeへのパスを設定:
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.exeがソリューションファイルだと認識できないので、拡張子を .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_ARM
かKMC_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