ビルドアクション(プレビルドとポストビルド)
テクニカル・ノート 99436
アーキテクチャ:
All
コンポーネント:
IDE
更新日:
2021/08/30 8:20
はじめに
このテクニカルノートでは、 プリビルドおよびポストビルドアクションについて説明します。
.cmdファイルを使用する場合の.vbsファイルの使用に関するアドバイスが含まれます。
解説
免責事項
ここでのコメントと提案は、Microsoft 製品の実際の使用とドキュメントに基づいていますが、ガイドラインとインスピレーションとして捉えてください。
Embedded Workbench for ARM のバージョンによる動作
明確にするために: このテクニカル ノートの提案は、バージョン 8.xx.x 以前に適用されます。
提案はバージョン 9.xx にも適用できますが、違いがあります。
バージョン 9.10 およびバージョン 9.20 では、ツールは常に (無条件に) ビルド前およびビルド後のアクションを実行します。
バージョン 9.30 は常にビルド前のアクションを実行しますが、ビルド後のアクションは実行しません (ビルド後のアクションは 8.xx の動作に戻りました)。
プレビルドコマンドラインとポストビルドコマンドライン
プレビルドおよびポストビルド アクション コマンドラインを指定する場合:
-
IAR Embedded Workbench 引数変数 の使用が可能
-
$TOOLKIT_DIR$\bin ディレクトリを環境変数PATHに含める
-
初期ワーキングディレクトリは $EW_DIR$\common\bin
IAR Embedded Workbench for ARM を例とすると、以下のいずれかのコマンドを使用して、ielfdumparm.exe のバージョンをビルドログウィンドウ上に表示できます。
$TOOLKIT_DIR$\bin\ielfdumparm.exe --version
ielfdumparm.exe --version
ielfdumparm --version
Figure 1 ielfdumparm --version
Shell コマンド
DIR
, ECHO
, PATH
, REM
などのShell-internal コマンドを使用するには、Shellを起動する必要があります。
例として、以下のスクリーンショットを参照してください。
Figure 2 - CMD.EXE /C DIR "$PROJ_DIR$\*.c"
Shell I/O リダイレクション
shell を使用する場合、Shellコマンドと実行ファイルの出力をファイルにリダイレクトすることができます。以下の例では、架空の Windows 実行ファイル app.exe
を使用しています。
Example I/O 1: windowsコマンドプロンプトで対話形式で実行:
app.exe > output.txt 2>&1
Example I/O 2: ビルドアクション コマンドラインから実行:
CMD /C "app.exe > $PROJ_DIR$\output.txt 2>&1"
Example I/O 3: ひとつの "CMD /C
" が出力ファイルを空にする場合 :
CMD /C "CMD /C "app.exe > $PROJ_DIR$\output.txt 2>&1""
.cmd ファイルの使用
.cmdファイルを使用すると、自動でshellを取得するため、通常のビルドアクションコマンドラインに比べて "CMD /C
" は、1つ少なくなります。
プロジェクトディレクトリにあるbuild.cmd の場合、ビルドアクション
$PROJ_DIR$\build.cmd "$PROJ_DIR$"
と 以下を含むbuild.cmd は、
PATH > %1\output.txt 2>&1
Example I/O-3 の代替となります。
Visual basic script (.vbs)を使用して、デタッチ可能なプロセスを作成する方法
IAR Embedded Workbench for Arm 8.20.2 以降では、デタッチ可能なコマンドシェル (.cmd
)は使用できません。 デタッチ可能なプロセスを使用でき、そのプロセスから.cmdを呼び出すことができます。唯一の欠点は、IAR EmbeddedWorkbenchへのI / O入力を使用できないことです。
デタッチ可能なプロセス は、Visual Basicスクリプト(ファイル拡張子.vbs)から作成できます。
redir.vbs
といった.vbs
redir.vbs
ファイルとthe_doer.cmd
のような.cmd
ファイルを作成します。- post-build に
Wscript $PROJ_DIR$\redir.vbs "cmd /c $PROJ_DIR$\the_doer.cmd"
とライン入力してください。
redir.vbsファイルは次のようになります:
Dim runner
Set runner = CreateObject("WScript.Shell")
args = WScript.Arguments(0)
WScript.Echo(args)
Call runner.Run(args, 1, true)
the_doer.cmd
ファイルは次のようになります:
Echo "I am doing something"
pause
Figure 3 – ' Wscript $PROJ_DIR$\redir.vbs "cmd /c $PROJ_DIR$\the_doer.cmd" '
サンプルプロジェクト
サンプルファイルは、 このリンク からダウンロードできます。プロジェクト(.ewp)は、 IAR Embedded Workbench for ARM 7.80 以降が必要です。
デタッチ可能なプロセスのサンプルファイルは、 このリンク から入手できます。 IAR Embedded Workbench for ARM 8.20.2 以降で、デタッチ可能なプロセスが使用できます。
追記
- ビルドログ ウィンドウにビルドアクションの出力を表示させるには、ウィンドウ内を右クリックして、コンテキストメニューから すべて を選択してください。
- 古いIDE (7以前) では、 Tools > Options > IDE Options… > Messages > Show build messages > All を設定してください。
- プロジェクトが最新の場合、ビルドアクションは呼び出されません。つまり、ビルドアクションは、ツールチェーン内の少なくとも1つのツールが呼び出された場合にのみ実行されます。
- ビルドアクションが確実に呼び出されるようにする1つの方法については、ビルド構成XAの例を参照してください。
- IAR Embedded Workbench の引数変数 とMicrosoft の環境変数は似ていますが、同じではありません。 .cmdファイルで$ PROJ_DIR $のような引数変数の値を使用するには、必要な引数の変数をパラメータとして渡します。
- プレビルドあるいはポストビルドコマンドがエラーコード(return value != 0 )を返した場合、ビルド/メイク コマンド全体が中止されます。
- ビルド構成XBの例を参照してください。
まとめ
このテクニカルノートでは、IAR Embedded Workbenchで使用可能なプレビルドおよびポストビルドアクションの使用に関する解説と提案を提供しています。
解説と提案は、マイクロソフト製品とドキュメントの実践的な使用に基づいていますが、ガイドラインおよびヒントとして参照してください。
全ての製品名は、それぞれの所有者の商標または登録商標です