Main Content

ビルド プロセスのファイルの依存関係の管理

生成コードのサイズを制御するうえで重要な点は、インクルードされるファイル (依存関係) の数とサイズの管理です。生成コードに必要なシステム ヘッダー ファイルと生成されたヘッダー ファイルの数を削減するには、ビルド プロセスで生成される依存関係と、依存関係の原因となる条件について理解すると役立ちます。

生成されたソース ファイルとヘッダー ファイルの依存関係を図に示します。ファイルからの矢印はそれが含むファイルを指します。他の依存関係が、たとえば Simulink® ヘッダー ファイルの tmwtypes.hsimstruc_types.h や、C または C++ ライブラリ ファイルに存在します。図はビルド フォルダー内で生成されるファイル間のみの含有関係をマッピングします。これらのファイルはコード生成フォルダー内にあるユーティリティ コードやモデル参照コードを参照する場合があります。ビルド プロセスで作成されるフォルダーとファイルの詳細については、ビルド プロセスのフォルダーの管理およびビルド プロセスのファイルの管理を参照してください。

2 つの表は、GRT および ERT ターゲットに対する依存関係ファイルの作成を制御する条件を示しています。ビルド関連の依存関係を管理するには、これらの条件をモデルやコード生成プロセスにどのように適用するかについて検討します。そしてモデルのパラメーターおよびコード生成オプションを設定して、ビルド プロセスのファイルの依存関係を管理します。

ERT ベースのシステム ターゲット ファイルを使用して生成されたコードのファイル パッケージング オプションの違いから、ファイルの依存関係は、GRT ベースのシステム ターゲット ファイルを使用して生成されたコードのファイル パッケージングとは多少異なります。Manage File Packaging of Generated Code Modulesを参照してください。

親システムのヘッダー ファイル (model.h) が子サブシステムのヘッダー ファイル (subsystem.h) をインクルードします。より多くの層のモデルでは、同様にサブシステムはモデルの階層構造内のその子のヘッダー ファイルをインクルードします。その結果、サブシステムは子孫のサブシステム内を再帰的に参照でき、ルート システム内も参照できます (すべての subsystem.c または subsystem.cppmodel.hmodel_private.h をインクルードするため)。

図で、ファイル model.hmodel_private.h および subsystem.h はヘッダー ファイル rtwtypes.h に依存します。ERT システム ターゲット ファイルでは、[データ型置換][Coder の typedef を使用] に設定されている場合にのみ rtwtypes.h への依存関係が存在します。

ERT システム ターゲット ファイルをベースとしないシステム ターゲット ファイルを使用する場合、生成するソース ファイルには追加の依存関係が tmwtypes.hsimstruc_types.h に存在する場合があります。

システム ヘッダー ファイル

システム ヘッダー ファイルは関数宣言、型定義およびマクロ定義をレガシ コードや外部コードで使用できるようにします。一部のコード生成シナリオでは、コード ジェネレーター製品固有のヘッダー ファイルをインクルードする必要があります。

コード ジェネレーターは、広い範囲で定義されている場合に一部のシステム ヘッダー ファイルをインクルードします。たとえば、ヘッダー ファイルを必要とするユーティリティ関数がモデルに含まれている場合、生成コードは <stddef.h> をインクルードします。次の方法はヘッダー ファイルの依存関係を特定するのに役立ちます。

  1. モデル コンフィギュレーション パラメーター [共有コードの配置] を ['Shared location'] に設定し、モデルを作成します。コード ジェネレーターはユーティリティ関数を __sharedutils フォルダーに配置します。

  2. ファイル内を検索するユーティリティ (grep ユーティリティなど) を使用して、__sharedutils フォルダー内の .c ファイルと .h ファイルで #include を検索します。検索結果としてヘッダー ファイルの依存関係があるユーティリティがリストされます。

  3. この情報を使用してモデルから削除するユーティリティを特定し、生成コード内のヘッダー ファイルの依存関係を減らします。

詳細については、固定小数点関数の共有ユーティリティ コードの生成を参照してください。

システム ヘッダー ファイル説明と、GRT または ERT システム ターゲット ファイルでのインクルード条件

<math.h>

演算定数を定義します

GRT—生成コードではこのファイルはインクルードされません。

ERT—生成コードがモデル コンフィギュレーションのソルバー [終了時間] に従っており、次のいずれかが満たされる場合、生成コードにこのファイルがインクルードされます。

  • モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が有効。MAT ファイルのログを参照してください。

  • モデル コンフィギュレーションでパラメーター [エクスターナル モード] が有効。

<float.h>

浮動小数点演算関数を与えます

GRT—モデルに浮動小数点数学関数が含まれている場合、生成コードにこのファイルがインクルードされます。

ERT—コード置換ライブラリのエントリによって関数がオーバーライドされる場合を除いて、モデルに浮動小数点数学関数が含まれている場合、生成コードにこのファイルがインクルードされます。詳細については、コード置換ライブラリの選択を参照してください。

<stddef.h>

NULL を定義します

GRT および ERT—モデルにこのファイルを必要とするユーティリティ関数が含まれている場合、生成コードにこのファイルがインクルードされます。

<stdio.h>

I/O 関数を与えます

GRT—モデルに To File ブロックが含まれている場合、生成コードにこのファイルがインクルードされます。

ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • モデルに To File ブロックが含まれている。

  • モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が有効。MAT ファイルのログを参照してください。

<stdlib.h>

整数バージョンの div()abs() などのユーティリティ関数を提供します。

GRT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • モデルに Stateflow® チャートが含まれている。

  • div() への呼び出しを生成する mod() または rem() が設定された Math Function ブロックがモデルに含まれている。

ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • モデルに Stateflow チャートが含まれており、モデル コンフィギュレーション パラメーター [サポート: 浮動小数点数] が選択されている。

  • div() への呼び出しを生成する mod() または rem() が設定された Math Function ブロックがモデルに含まれている。

<string.h>

memset()memcpy() のようなユーティリティ関数を与えます。

GRT—モデル初期化コードが memset() を呼び出す場合、生成コードにこのファイルがインクルードされます。

ERT—ブロック初期化コードまたはモデル初期化コードが memcpy() または memset() を呼び出す場合、生成コードにこのファイルがインクルードされます。

関係するブロックのリストについては、コマンド ウィンドウで次を入力してください。

showblockdatatypetable

N2 メモをもつブロックを探してください。モデル初期化コードから memset() への呼び出しを省略するために、モデル コンフィギュレーション パラメーターの [ルート レベル I/O のゼロ初期化を削除][内部データのゼロ初期化を削除] を選択します。

コード ジェネレーター ヘッダー ファイル

表内の生成されるヘッダーの依存関係は、システム ターゲット ファイル grt.tlcert.tlc に適用されます。これらのベース システム ターゲット ファイルから派生したシステム ターゲット ファイルには、追加のヘッダー依存関係が含まれている場合があります。ブロックセット、組み込みターゲット、およびカスタムの S-Function からのブロックのコード生成によって、追加のヘッダー依存関係が導入される場合があります。

ヘッダー ファイル説明と、GRT または ERT システム ターゲット ファイルでのインクルード条件

builtin_typeid_types.h

組み込みデータ型に対応する列挙型を定義します

GRT および ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。

  • メッセージを使用する Stateflow チャートがモデルに含まれている。

  • モデル コンフィギュレーションで次が有効になっている:[MAT ファイルのログ]MAT ファイルのログを参照してください。

  • モデル コンフィギュレーションの [コード生成][インターフェイス] で [C API] オプションが選択されている。

dt_info.h

エクスターナル モード用のデータ構造を定義します

GRT および ERT—モデル コンフィギュレーションでエクスターナル モードが有効の場合、生成コードにこのファイルがインクルードされます。

ext_work.h

エクスターナル モードの関数を定義します

GRT および ERT—モデル コンフィギュレーションでエクスターナル モードが有効の場合、生成コードにこのファイルがインクルードされます。

fixedpoint.h

インラインでない S-Function への固定小数点サポートを与えます

GRT—生成コードにこのファイルがインクルードされます。

ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • インラインでない S-Function がモデルで使用されている。

  • モデル コンフィギュレーションでパラメーター [クラシック コール インターフェイス] が選択されている。

model_reference_types.h

タイミング ブリッジの型定義を含んでいます

GRT および ERT—参照モデルをビルドする場合または Model ブロックを含むモデルをビルドする場合、生成コードにこのファイルがインクルードされます。

model_types.h

モデル固有のデータ型を定義します

GRT および ERT—生成コードにこのファイルがインクルードされます。

multiword_types.h

マルチワード幅のデータ型の型定義およびそのワードサイズのチャンクが含まれます。

GRT および ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。

  • モデルでマルチワード データ型が使用されている。

  • モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が選択されている。MAT ファイルのログを参照してください。

  • モデル コンフィギュレーションで [エクスターナル モード] が選択されている。

マルチワード データ型を使用するモデルでは、コード ジェネレーターは、コードが前回生成されたモデルのデータ型よりも長さが大きい場合、ファイルを上書きします。このファイルの上書きを回避するには、次を設定します。

  • MultiwordTypeDef'User defined'

  • MultiwordLength をモデルで必要な最大の長さに

rtGetInf.h

rtGetNaN.h

rt_nonfinite.h

非有限数をサポートします

GRT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。

  • モデルに S-Function が含まれている。

  • 生成コードが非有限数を必要とする。

  • モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が選択されている。MAT ファイルのログを参照してください。

  • モデル コンフィギュレーションでパラメーター [クラシック コール インターフェイス] が選択されている。

ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。

  • モデルに S-Function が含まれている。

  • 生成コードが非有限数を必要とする。

  • モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が選択されている。MAT ファイルのログを参照してください。

rt_defines.h

特殊な数学的な定数 (π および e など) の型定義を含み、UNUSED_PARAMETER マクロを定義します

GRT および ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • 生成コードが数学的な定数の定義を必要とする。

  • 関数本体が必要なモデル関数の引数にアクセスできない。

rt_logging.h

MAT ファイルのログをサポートし、次をインクルードします。

rtwtypes.h
builtin_typeid_types.h
multiword_types.h
rt_mxclassid.h
rtw_matlogging.h

GRT—生成コードにこのファイルがインクルードされます。

ERT—モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が選択されている場合、生成コードにこのファイルがインクルードされます。MAT ファイルのログを参照してください。

rt_mxclassid.h

mxArray クラス ID 列挙型を定義します

GRT および ERT—生成コードに rt_logging.c が含まれている場合、生成コードにこのファイルがインクルードされます。

rtw_continuous.h

連続時間をサポートします

GRT—生成コードに simstruc_types.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—モデル コンフィギュレーションでパラメーター [サポート: 連続時間] が選択されており、コードにまだ simstruc.h がインクルードされていない場合、生成コードにこのファイルがインクルードされます。

rtw_extmode.h

エクスターナル モードをサポートします

GRT—生成コードに simstruc_types.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—モデル コンフィギュレーションでエクスターナル モードが選択されており、コードにまだ simstruc.h がインクルードされていない場合、生成コードにこのファイルがインクルードされます。

rtw_matlogging.h

MAT ファイルのログをサポートします

GRT—生成コードに simstruc_types.hrt_logging.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—生成コードに rt_logging.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

rtw_solver.h

連続状態をサポートします

GRT—生成コードに simstruc_types.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—モデル コンフィギュレーションでパラメーター [サポート: 連続時間] が選択されており、コードにまだ simstruc.h がインクルードされていない場合、生成コードにこのファイルがインクルードされます。

rtwtypes.h

コード ジェネレーター データ型を定義します。

GRT—生成コードにこのファイルがインクルードされます。tmwtypes.h をインクルードするファイルの verbose バージョンを使用します。

ERT—次のいずれかの条件が満たされる場合、生成コードにこのファイルがインクルードされます。

  • [データ型置換][Coder の typedef を使用] に設定されている。

  • [データ型置換][固定幅の整数の C データ型を使用] に設定されており、[Coder の typedef 互換性] が選択されている。

rtwtypes.hを参照してください。

以下の (無効になっていた) サポートを有効にすると、コード ジェネレーターは以前に生成された rtwtypes.h を上書きします。

  • 複素数 (SupportComplex'on' に設定されているもの)

  • インラインでない S-Function (SupportNonInlinedSFcns'on' に設定されているもの)

rtwtypes.h の上書きを回避するには、次のことが可能です。

  • モデルで現在複素数データ型を使用していなくても複素数データ型のサポートを指定する。

  • インラインでない S-Function のサポートを無効にする。この場合、インラインでない S-Function を使用するとエラーとなります。このエラーを回避するには、S-Function をインライン化された S-Function に変換します。詳細については、S-Function のインライン化を参照してください。

simstruc.h

Simstruct 定義を使用するインラインでない S-Function の呼び出しをサポートします。また次をインクルードします。

limits.h
string.h
tmwtypes.h
simstruc_types.h

GRT—生成コードにこのファイルがインクルードされます。

ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。

  • インラインでない S-Function がモデルで使用されている。

  • モデル コンフィギュレーションでパラメーター [クラシック コール インターフェイス] が選択されている。

simstruc_types.h

生成コードが次のヘッダー ファイルを使用およびインクルードするための定義を提供します。

rtw_matlogging.h
rtw_extmode.h
rtw_continuous.h
rtw_solver.h
sysran_types.h

GRT—生成コードに rtwtypes.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—生成コードではこのファイルはインクルードされません。ERT の場合、rtwtypes.h に定義が含まれており、model.h にヘッダー ファイルが含まれています。

sysran_types.h

エクスターナル モードをサポートします

GRT—生成コードに simstruc_types.h がインクルードされる場合、生成コードにこのファイルがインクルードされます。

ERT—モデル コンフィギュレーションでエクスターナル モードが選択されており、コードにまだ simstruc.h がインクルードされていない場合、生成コードにこのファイルがインクルードされます。

zero_crossing_types.h

トリガーが立ち上がり、立ち下がり、または両方の Triggered Subsystem をもつモデルのゼロクロッシングの定義が含まれます。ファイルは、トリガー信号のデータ型によって決定されるとおり、モデルで必要とされる場合にのみ生成されます。

GRT—生成コードではこのファイルは GRT コード生成ターゲットにインクルードされません。

ERT—モデルに条件付き実行サブシステムがあり、トリガーがゼロクロッシングの定義を使用する場合、生成コードにはこのファイルがインクルードされます。

生成されると、zero_crossing_types.h の内容は常に同じになります。

関連するトピック