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_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