メインコンテンツ

テンプレートを使用した生成コード ファイルの形式の設定

この例では、コード生成テンプレート (.cgt ファイル) を使用して、カスタム コード バナーの追加、データと関数の再配置、および生成コード ファイルへの追加コード セグメントやドキュメンテーションの挿入または削除を行う方法を説明します。コード生成テンプレートは、生成されたコードに一貫したレイアウトと外観を適用することで、組織のコーディング標準を満たすのに役立ちます。

Embedded Coder® は、既定のコード テンプレート ファイルを以下で提供しています。

matlabroot/toolbox/rtw/targets/ecoder/ert_code_template.cgt

このファイルに基づいてカスタム テンプレートを作成して MATLAB® パスに保存します。[モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[テンプレート] ペインでテンプレートを指定します。コードを生成すると、コード ジェネレーターは指定のテンプレートをインポートします。

既定のコード生成テンプレートの使用

モデル例 CodeTemplate を開きます。

model='CodeTemplate';
open_system(model)

モデルが既定のコード生成テンプレートを使用していることを確認します。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスで、[コード生成][テンプレート] ペインを開きます。

  • [コード テンプレート] セクションで、[ソース ファイル テンプレート] フィールドが ert_code_template.cgt に設定されていることを確認します。

  • [ソース ファイル テンプレート] の横の [編集] ボタンをクリックします。ert_code_template.cgt テンプレートが MATLAB コマンド ウィンドウで開きます。コード テンプレートを検査します。

コードを生成します。[C コード] タブで、[ビルド] をクリックします。

evalc('slbuild(model)');

CodeTemplate.c を開いて生成されたコードを検証します。

file = fullfile("CodeTemplate_ert_rtw","CodeTemplate.c");
coder.example.extractLines(file,"File: CodeTemplate.c","*/",1,1)
 * File: CodeTemplate.c
 *
 * Code generated for Simulink model 'CodeTemplate'.
 *
 * Model version                  : 14.0
 * Simulink Coder version         : 26.1 (R2026a) 20-Nov-2025
 * C/C++ source code generated on : Sun Jan 25 21:00:46 2026
 *
 * Target selection: ert.tlc
 * Embedded hardware selection: Intel->x86-64 (Windows64)
 * Code generation objectives: Unspecified
 * Validation result: Not run
 */

コード生成テンプレートの指定

ソース ファイル テンプレート rtwdemocodetemplate.cgt を指定します。このテンプレートは、DocBlock ブロックの Abstract および [モデル プロパティ] ダイアログ ボックスの [モデルの説明] タブからテキストを抽出します。

[コード テンプレート] セクションの [ソース ファイル テンプレート] フィールドに「rtwdemocodetemplate.cgt」と入力します。

set_param(model,ERTSrcFileBannerTemplate="rtwdemocodetemplate.cgt");

[ソース ファイル テンプレート] の横の [編集] ボタンをクリックします。rtwdemocodetemplate.cgt テンプレートが MATLAB コマンド ウィンドウで開きます。コード テンプレートを検査します。

コードを生成します。[C コード] タブで、[ビルド] をクリックします。

evalc('slbuild(model)');

CodeTemplate.c ファイルを開いて生成されたコードを検証します。Abstract ブロックおよび [モデル プロパティ] ダイアログ ボックスのテキストは、それぞれ ABSTRACTMODEL INFORMATION の見出しの下にあるカスタム ファイル バナー内に表示されます。

file = fullfile("CodeTemplate_ert_rtw","CodeTemplate.c");
coder.example.extractLines(file,"FILE INFORMATION:","additional code segments",1,1)
 * FILE INFORMATION:
 * File name: CodeTemplate.c
 * C source code generated on : Sun Jan 25 21:00:52 2026
 *
 * ABSTRACT:
 * This text maps to the code template %<Abstract> symbol.
 *
 * NOTES:
 *
 *
 * MODEL INFORMATION:
 * Model Name:         CodeTemplate
 * Model Version:      14.0
 * Model Description:  Formatting Generated Files with Templates
 *
 * This example shows how to use code generation templates to add
 * custom code banners, rearrange data and functions, and insert
 * additional code segments and documentation into generated code files.

コード生成テンプレートの変更

生成されたコード内のカスタム ファイル バナーには、コード生成のタイムスタンプが表示されます。継続的インテグレーション システムを使用している場合は、コメントの軽微な変更がなければソース管理へのファイルのチェックインが効率化することがあるため、この情報を削除すると役立つ場合があります。

タイムスタンプを削除するために、ソース ファイル テンプレートを変更します。rtwdemocodetemplate.cgt ファイルを開き、次の行を削除します。

C source code generated on : %<SourceGeneratedOn>
!sed -i '15d' rtwdemocodetemplate.cgt

ファイル rtwdemocodetemplate.cgt を保存します。

モデル キャッシュ ファイルおよび slprj プロジェクト ディレクトリを削除します。次に、コードを再生成します。

delete *.slxc; 
rmdir slprj s;
evalc('slbuild(model)');

CodeTemplate.c ファイルを開き、タイムスタンプが表示されなくなっていることを確認します。

coder.example.extractLines(file,"FILE INFORMATION:","additional code segments",1,1)
 * FILE INFORMATION:
 * File name: CodeTemplate.c
 *
 * ABSTRACT:
 * This text maps to the code template %<Abstract> symbol.
 *
 * NOTES:
 *
 *
 * MODEL INFORMATION:
 * Model Name:         CodeTemplate
 * Model Version:      14.0
 * Model Description:  Formatting Generated Files with Templates
 *
 * This example shows how to use code generation templates to add
 * custom code banners, rearrange data and functions, and insert
 * additional code segments and documentation into generated code files.

参考

トピック