ビルド プロセスのファイルの依存関係の管理
生成コードのサイズを制御するうえで重要な点は、インクルードされるファイル (依存関係) の数とサイズの管理です。生成コードに必要なシステム ヘッダー ファイルと生成されたヘッダー ファイルの数を削減するには、ビルド プロセスで生成される依存関係と、依存関係の原因となる条件について理解すると役立ちます。
生成されたソース ファイルとヘッダー ファイルの依存関係を図に示します。ファイルからの矢印はそれが含むファイルを指します。他の依存関係が、たとえば Simulink® ヘッダー ファイルの tmwtypes.h
と simstruc_types.h
や、C または C++ ライブラリ ファイルに存在します。図はビルド フォルダー内で生成されるファイル間のみの含有関係をマッピングします。これらのファイルはコード生成フォルダー内にあるユーティリティ コードやモデル参照コードを参照する場合があります。ビルド プロセスで作成されるフォルダーとファイルの詳細については、ビルド プロセスのフォルダーの管理およびビルド プロセスのファイルの管理を参照してください。
2 つの表は、GRT および ERT ターゲットに対する依存関係ファイルの作成を制御する条件を示しています。ビルド関連の依存関係を管理するには、これらの条件をモデルやコード生成プロセスにどのように適用するかについて検討します。そしてモデルのパラメーターおよびコード生成オプションを設定して、ビルド プロセスのファイルの依存関係を管理します。
ERT ベースのシステム ターゲット ファイルを使用して生成されたコードのファイル パッケージング オプションの違いから、ファイルの依存関係は、GRT ベースのシステム ターゲット ファイルを使用して生成されたコードのファイル パッケージングとは多少異なります。Manage File Packaging of Generated Code Modules (Embedded Coder)を参照してください。
親システムのヘッダー ファイル (
) が子サブシステムのヘッダー ファイル (model
.h
) をインクルードします。より多くの層のモデルでは、同様にサブシステムはモデルの階層構造内のその子のヘッダー ファイルをインクルードします。その結果、サブシステムは子孫のサブシステム内を再帰的に参照でき、ルート システム内も参照できます (すべての subsystem
.h
または subsystem
.c
が subsystem
.cpp
と model
.h
をインクルードするため)。model
_private.h
図で、ファイル
、model
.h
および model
_private.h
はヘッダー ファイル subsystem
.hrtwtypes.h
に依存します。ERT システム ターゲット ファイルでは、[データ型置換] が [Coder の typedef を使用]
に設定されている場合にのみ rtwtypes.h
への依存関係が存在します。
ERT システム ターゲット ファイルをベースとしないシステム ターゲット ファイルを使用する場合、生成するソース ファイルには追加の依存関係が tmwtypes.h
と simstruc_types.h
に存在する場合があります。
システム ヘッダー ファイル
システム ヘッダー ファイルは関数宣言、型定義およびマクロ定義をレガシ コードや外部コードで使用できるようにします。一部のコード生成シナリオでは、コード ジェネレーター製品固有のヘッダー ファイルをインクルードする必要があります。
コード ジェネレーターは、広い範囲で定義されている場合に一部のシステム ヘッダー ファイルをインクルードします。たとえば、ヘッダー ファイルを必要とするユーティリティ関数がモデルに含まれている場合、生成コードは <stddef.h>
をインクルードします。次の方法はヘッダー ファイルの依存関係を特定するのに役立ちます。
モデル コンフィギュレーション パラメーター [共有コードの配置] を [
'Shared location'
] に設定し、モデルを作成します。コード ジェネレーターはユーティリティ関数を__sharedutils
フォルダーに配置します。ファイル内を検索するユーティリティ (grep ユーティリティなど) を使用して、
__sharedutils
フォルダー内の.c
ファイルと.h
ファイルで#include
を検索します。検索結果としてヘッダー ファイルの依存関係があるユーティリティがリストされます。この情報を使用してモデルから削除するユーティリティを特定し、生成コード内のヘッダー ファイルの依存関係を減らします。
詳細については、固定小数点関数の共有ユーティリティ コードの生成を参照してください。
システム ヘッダー ファイル | 説明と、GRT または ERT システム ターゲット ファイルでのインクルード条件 |
---|---|
| 演算定数を定義します GRT—生成コードではこのファイルはインクルードされません。 ERT—生成コードがモデル コンフィギュレーションのソルバー [終了時間] に従っており、次のいずれかが満たされる場合、生成コードにこのファイルがインクルードされます。
|
| 浮動小数点演算関数を与えます GRT—モデルに浮動小数点数学関数が含まれている場合、生成コードにこのファイルがインクルードされます。 ERT—コード置換ライブラリのエントリによって関数がオーバーライドされる場合を除いて、モデルに浮動小数点数学関数が含まれている場合、生成コードにこのファイルがインクルードされます。詳細については、コード置換ライブラリの選択を参照してください。 |
| NULL を定義します GRT および ERT—モデルにこのファイルを必要とするユーティリティ関数が含まれている場合、生成コードにこのファイルがインクルードされます。 |
| I/O 関数を与えます GRT—モデルに To File ブロックが含まれている場合、生成コードにこのファイルがインクルードされます。 ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
|
| 整数バージョンの GRT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
|
|
GRT—モデル初期化コードが ERT—ブロック初期化コードまたはモデル初期化コードが 関係するブロックのリストについては、コマンド ウィンドウで次を入力してください。
N2 メモをもつブロックを探してください。モデル初期化コードから |
コード ジェネレーター ヘッダー ファイル
表内の生成されるヘッダーの依存関係は、システム ターゲット ファイル grt.tlc
と ert.tlc
に適用されます。これらのベース システム ターゲット ファイルから派生したシステム ターゲット ファイルには、追加のヘッダー依存関係が含まれている場合があります。ブロックセット、組み込みターゲット、およびカスタムの S-Function からのブロックのコード生成によって、追加のヘッダー依存関係が導入される場合があります。
ヘッダー ファイル | 説明と、GRT または ERT システム ターゲット ファイルでのインクルード条件 |
---|---|
| 組み込みデータ型に対応する列挙型を定義します GRT および ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。
|
| エクスターナル モード用のデータ構造を定義します GRT および ERT—モデル コンフィギュレーションでエクスターナル モードが有効の場合、生成コードにこのファイルがインクルードされます。 |
| エクスターナル モードの関数を定義します GRT および ERT—モデル コンフィギュレーションでエクスターナル モードが有効の場合、生成コードにこのファイルがインクルードされます。 |
| インラインでない S-Function への固定小数点サポートを与えます GRT—生成コードにこのファイルがインクルードされます。 ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
|
| タイミング ブリッジの型定義を含んでいます GRT および ERT—参照モデルをビルドする場合または Model ブロックを含むモデルをビルドする場合、生成コードにこのファイルがインクルードされます。 |
| モデル固有のデータ型を定義します GRT および ERT—生成コードにこのファイルがインクルードされます。 |
| マルチワード幅のデータ型の型定義およびそのワードサイズのチャンクが含まれます。 GRT および ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。
マルチワード データ型を使用するモデルでは、コード ジェネレーターは、コードが前回生成されたモデルのデータ型よりも長さが大きい場合、ファイルを上書きします。このファイルの上書きを回避するには、次を設定します。
|
| 非有限数をサポートします GRT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。
ERT—次の 1 つ以上の条件が満たされる場合、生成コードにこのファイルがインクルードされます。
|
| 特殊な数学的な定数 (π および e など) の型定義を含み、 GRT および ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
|
| MAT ファイルのログをサポートし、次をインクルードします。 rtwtypes.h builtin_typeid_types.h multiword_types.h rt_mxclassid.h rtw_matlogging.h GRT—生成コードにこのファイルがインクルードされます。 ERT—モデル コンフィギュレーションでパラメーター [MAT ファイルのログ] が選択されている場合、生成コードにこのファイルがインクルードされます。MAT-file loggingを参照してください。 |
|
GRT および ERT—生成コードに |
| 連続時間をサポートします GRT—生成コードに ERT—モデル コンフィギュレーションでパラメーター [サポート: 連続時間] が選択されており、コードにまだ |
| エクスターナル モードをサポートします GRT—生成コードに ERT—モデル コンフィギュレーションでエクスターナル モードが選択されており、コードにまだ |
| MAT ファイルのログをサポートします GRT—生成コードに ERT—生成コードに |
| 連続状態をサポートします GRT—生成コードに ERT—モデル コンフィギュレーションでパラメーター [サポート: 連続時間] が選択されており、コードにまだ |
| コード ジェネレーター データ型を定義します。 GRT—生成コードにこのファイルがインクルードされます。 ERT—次のいずれかの条件が満たされる場合、生成コードにこのファイルがインクルードされます。
rtwtypes.hを参照してください。 以下の (無効になっていた) サポートを有効にすると、コード ジェネレーターは以前に生成された rtwtypes.h を上書きします。
|
|
limits.h string.h tmwtypes.h simstruc_types.h GRT—生成コードにこのファイルがインクルードされます。 ERT—次のいずれかの場合、生成コードにこのファイルがインクルードされます。
|
| 生成コードが次のヘッダー ファイルを使用およびインクルードするための定義を提供します。 rtw_matlogging.h rtw_extmode.h rtw_continuous.h rtw_solver.h sysran_types.h GRT—生成コードに ERT—生成コードではこのファイルはインクルードされません。ERT の場合、 |
| エクスターナル モードをサポートします GRT—生成コードに ERT—モデル コンフィギュレーションでエクスターナル モードが選択されており、コードにまだ |
| トリガーが立ち上がり、立ち下がり、または両方の Triggered Subsystem をもつモデルのゼロクロッシングの定義が含まれます。ファイルは、トリガー信号のデータ型によって決定されるとおり、モデルで必要とされる場合にのみ生成されます。 GRT—生成コードではこのファイルは GRT コード生成ターゲットにインクルードされません。 ERT—モデルに条件付き実行サブシステムがあり、トリガーがゼロクロッシングの定義を使用する場合、生成コードにはこのファイルがインクルードされます。 生成されると、 |