このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
STF_make_rtw_hook ファイルによるビルド プロセスのカスタマイズ
ビルド プロセスでは、コード生成と make プロセスの特定の時点で実行されるフック メソッドに、オプションのカスタム コードを追加できます。フック メソッドを使用してターゲット固有の行動をビルド プロセスに追加することができます。
STF_make_rtw_hook ファイル
一般に と呼ばれるファイル内のフック メソッドは変更できます。この STF_make_rtw_hook.m はシステム ターゲット ファイルの名前です (たとえば、STFert や mytarget など)。このファイルは関数 を実装します。この関数は渡された STF_make_rtw_hookhookMethod 引数に依存し、特定の行動を送信します。
ビルド プロセスは を呼び出し、引数 STF_make_rtw_hookhookMethod などの引数を渡します。ビルド プロセスに必要なフック メソッドのみを実装してください。
モデルに参照モデルが含まれている場合は、必要に応じて参照モデルごとに を実装できます。ビルド プロセスは参照モデルごとにそれぞれ STF_make_rtw_hook.m を呼び出し、これらのファイルを (依存関係の順に) 再帰的に処理します。STF_make_rtw_hook
STF_make_rtw_hook ファイルの使用に関する規則
ビルド プロセスが必ず を呼び出すように、以下の条件が満たされていることを確認します。STF_make_rtw_hook
ファイルが MATLAB® パス上にあること。STF_make_rtw_hook.mファイル名がシステム ターゲット ファイル (
STF) の名前であり、テキスト_make_rtw_hook.mに付加されていること。たとえば、カスタムのシステム ターゲット ファイルmytarget.tlcでコードを生成する場合、フック ファイルの名前はmytarget_make_rtw_hook.mとし、そのファイル内で実装されたフック関数の名前はmytarget_make_rtw_hookとします。ファイル内で実装されたフック関数が関数プロトタイプ STF_make_rtw_hook.m と引数で説明する関数プロトタイプを使用すること。
関数プロトタイプ STF_make_rtw_hook.m と引数
用の関数プロトタイプは、次のとおりです。STF_make_rtw_hook
function STF_make_rtw_hook(hookMethod, modelName, rtwRoot, templateMakefile, buildOpts, buildArgs, buildInfo)
引数は、次のように定義されます。
hookMethod:関数が呼び出されるビルド プロセスの段階を指定する文字ベクトル。以下のフロー チャートはビルド プロセスをまとめたもので、フック点を強調表示しています。STF_make_rtw_hookhookMethod用の有効値は、'entry'、'before_tlc'、'after_tlc'、'before_make'、'after_make'、'exit'、'error'です。関数はSTF_make_rtw_hookswitchステートメントで関連コードへ送信します。
modelName:モデルの名前を指定する文字ベクトル。ビルド プロセスのすべての段階で有効です。rtwRoot:予備。templateMakefile:テンプレート makefile の名前。buildOpts:Boolean のフィールドcodeWasUpToDateが含まれている MATLAB 構造体。'before_make'、'after_make'、'exit'段階のみで有効です。buildArgs:make_rtwへの引数が含まれる文字ベクトル。ビルド プロセスを呼び出すと、buildArgsは [コンフィギュレーション パラメーター] + [コード生成] + [make コマンド] フィールド内で"make_rtw"に続く引数からコピーされます。たとえば、次の [make コマンド] フィールドの make 引数
make_rtw VAR1=0 VAR2=4
は、以下を生成します。
% make -f untitled.mk VAR1=0 VAR2=4
buildArgs引数がツールチェーン アプローチのビルドに適用されないのは、これらのビルドがmake_rtw呼び出しに make 引数を追加することができないためです。コンパイラ コマンド ラインで、TMF アプローチのビルドとツールチェーン アプローチのビルドの両方に適用されるカスタム定義 (たとえば、VAR1=0 VAR2=4) を指定するには、[コンフィギュレーション パラメーター] 、 [コード生成] 、 [カスタム コード] 、 [定義] フィールドを使用します。buildInfo:生成されたコードのコンパイルとリンクに関する情報を格納するRTW.BuildInfoオブジェクト。'after_tlc'、'before_make'、'after_make'、'exit'段階のみで有効です。'after_tlc'段階の終了時、このオブジェクト内の情報は完了していない可能性があります。さらに後の段階では、'before_make'および'after_make'フック メソッドもオブジェクトに情報を追加できます。RTW.BuildInfoオブジェクトの使用方法の詳細については、コード コンパイルのカスタマイズを参照してください。
STF_make_rtw_hook.m の応用
この節では、 フック メソッドを使用する方法を説明します。STF_make_rtw_hook.m
通常、'entry' フックを使用してビルド プロセスを初期化し、コードを生成する前に、たとえば、設定を変更したり有効にしたりすることができます。'entry' フックの応用の 1 つは、ターゲットの選択時に最初に起動した自動コンフィギュレーション スクリプトを再度実行し、スクリプトが認証を実行する前と後のモデル パラメーターを比較することです。
他のフック ポイント 'before_tlc'、'after_tlc'、'before_make'、'after_make'、'exit'、'error' は、外部のツール チェーン、ソース管理ツール、および他の環境ツールとインターフェイスする際に役立ちます。
たとえば、'entry' 後の段階で ファイルを使用し、ビルド フォルダーへのパスを取得することができます。それから STF_make_rtw_hook.m'exit' 段階で、ビルド フォルダー内で生成コードファイルを見つけ、それらをバージョン制御システム内にチェック インすることができます。コード生成中またはビルド プロセス時にエラーが発生する場合は、'error' を使用して、フック関数が使用した静的データまたはグローバル データをクリーン アップすることができます。
メモ
ビルド プロセスは MATLAB 作業フォルダーを一時的に段階 'before_make'、'after_make'、'exit'、'error' 用のビルド フォルダーに変更します。 ファイルはビルド フォルダーの位置に関して誤った仮定をしてはなりません。STF_make_rtw_hook.m'entry' 段階後、ビルド フォルダーへのパスを取得することができます。以下の MATLAB コード例では、ビルド フォルダー パスは変数 buildDirPath に文字ベクトルとして返されます。
buildDirPath = rtwprivate('get_makertwsettings',gcs,'BuildDirectory');メモ
ファイルを使用して以下を行わないでください。STF_make_rtw_hook.m
モデル コンフィギュレーションを変更する。たとえば、以下にはフック メソッドを使用しないでください。
モデル バリアント間の切り替え。
関数
set_paramの呼び出し。
モデル コンフィギュレーションを変更すると、予期しないコード生成結果となる可能性があります。
モデルをコンパイルするコマンドを実行する。モデルをコンパイルすると、予期しない動作が生じる可能性があります。
STF_make_rtw_hook.m を使用したコード再生成の制御
モデルをリビルドするとき、既定の設定では、ビルド プロセスはモデルまたは関連する設定の変更によって、最上位モデルのコードの再生成が必要かどうかを判断するために、チェックを実行します。(詳細については、最上位モデル コードの再生成の制御を参照)。チェック結果が最上位モデル コードの生成が必要であることを示している場合は、ビルド プロセスはモデル コードの完全な再生成とコンパイルを実行します。チェック結果が、最上位モデルの生成コードがモデルに対して最新であり、モデル設定に完全な再生成が必要ないことを示している場合、ビルド プロセスは最上位モデル コードの再生成を省略します。
最上位モデル コードが再生成されたかどうかに関わりなく、ビルド プロセスは続けて関数 やコード生成後のコマンドを含むビルド プロセス フックを呼び出します。次のメカニズムにより、関数 STF_make_rtw_hook のコード再生成に関連するアクションを実行できます。STF_make_rtw_hook
強制的にコードを再生成するには、
'entry'フックから次の関数呼び出しを使用します。rtw.targetNeedsCodeGen('set', true);'before_tlc'から'exit'までのフックでは、フックに渡されるbuildOpts構造体には論理値のフィールドcodeWasUpToDateがあります。このフィールドは、モデル コードが最新の状態であったために再生成されなかった場合にtrueにセットされます。コードが最新の状態ではなく再生成が必要だった場合には、falseになります。このフィールドの値に基づいてフック処理をカスタマイズできます。以下に例を示します。... case 'before_tlc' if buildOpts.codeWasUpToDate %Perform hook actions for up to date model else %Perform hook actions for full code generation end ...
ビルド プロシージャ用に STF_make_rtw_hook.m を使用
ビルド プロシージャ用にカスタムの フック ファイルを作成するには、次の例のファイルをコピーして編集します。STF_make_rtw_hook
以下の手順に従います。
grt_make_rtw_hook.mを MATLAB パス上のフォルダーにコピーします。STF_make_rtw_hook ファイルの使用に関する規則で説明する命名規則に従ってファイル名を変更します。ファイル内で
grt_make_rtw_hook.m関数の名前を変更して、ファイル名と一致させます。switch hookMethodステートメント内のcaseステートメントにコードを追加することにより、必要なフックを実装します。
フック メソッド after_tlc
after_tlc フック メソッドは、下位互換性のためにのみ提供されています。
after_tlc 段階の生成コードの形式は最終的な形式ではありません。
