控制生成代码大小的一个重要方法是管理包含文件(依赖项)的数量和大小。为了减少生成代码所需的系统头文件和生成的头文件的数量,理解构建过程生成的依赖关系和导致依赖关系的条件是很有帮助的。
生成的源文件和头文件之间的依赖关系如图所示。从文件点指向它包含的文件的箭头。其他依赖项也存在,例如,在Simulink上金宝app®标题文件tmwtypes.h.
和simstruc_types.h
,加上C或c++库文件。这个图只映射了在构建文件夹中生成的那些文件之间的包含关系。这些文件可以引用位于代码生成文件夹中的实用程序和模型引用代码。有关构建过程创建的文件夹和文件的详细信息,请参见管理构建过程文件夹和管理构建过程文件.
这两个表标识了控制GRT和ERT目标依赖项文件创建的条件。要管理与构建相关的依赖项,请考虑如何将这些条件应用于您的模型和代码生成过程。然后,配置模型参数和代码生成选项来管理构建过程文件的依赖关系。
由于使用基于ert的系统目标文件生成的代码的文件打包选项的不同,文件依赖关系与使用基于grt的系统目标文件生成的代码的文件打包略有不同。看到管理生成的代码模块的文件包(嵌入式编码器).
父系统头文件(
)包括子子系统标题文件(模型
.h
)。在更多分层的模型中,子系统类似地包括模型层次结构中的子节点文件。因此,子系统能够在其后代子系统中递归地观看,并因为每一个子系统
.h
或子系统
.c
包括子系统
.cpp.
和模型
.h
.模型
_private.h
在图中,文件
那模型
.h
,模型
_private.h
取决于标题文件子系统
.hRTWTYPES.H.
.如果使用不基于ERT系统目标文件的系统目标文件,则生成的源文件可能具有额外的依赖关系tmwtypes.h.
和simstruc_types.h
.
系统头文件使遗留代码或外部代码可以使用函数声明、类型定义和宏定义。有些代码生成场景需要包含特定于代码生成器产品的头文件。
代码生成器包括一些用于广义定义的情况的系统头文件。例如,生成的代码包括
当模型包含需要此头文件的实用程序函数时。此方法有助于识别标题文件依赖项:
设置模型配置参数共享代码的位置到“共享位置”
然后建立模型。代码生成器将实用程序函数放入其中__sharedutils
文件夹。
使用查找文件(例如,grep实用程序)来搜索.c
和.h
文件中的文件__sharedutils
文件夹#包括
.搜索结果列出了标题文件依赖项的实用程序。
使用此信息来识别要从模型中删除的实用工具,并减少生成代码中的头文件依赖关系。
有关更多信息,请参见生成用于固定点函数的共享实用程序代码.
系统标题文件 | GRT或ERT系统目标文件的描述和包含条件 |
---|---|
|
定义数学常数 grt生成的代码不包括这个文件。 当代码符合求解器的模型配置时,ert生成的代码包括这个文件停止时间和:
|
提供浮点数学函数 当模型包含浮点数学函数时,grt生成的代码就包含这个文件。 当您的模型包含浮点数学函数时,ert生成的代码将包含此文件,除非代码替换库条目覆盖该函数。有关更多信息,请参见选择代码替换库. |
|
定义null. GRT和ERT生成的代码包括此文件,当您的模型包含需要此文件的实用程序函数时。 |
|
|
提供文件I/O功能 当你的模型包含一个到文件堵塞。 ERT生成的代码包括以下文件: |
提供实用程序功能,例如整数版本 grt生成的代码包含这个文件:
ERT生成的代码包括以下文件:
|
|
|
提供记忆功能,例如 当您的模型初始化代码调用时,GRT生成的代码包括此文件 当块或模型初始化代码调用时,ert生成的代码包括这个文件 有关相关块列表,请在命令窗口中键入:
寻找带有N2音符的方块。省略对 |
生成头文件的表中的依赖项应用于系统目标文件grt.tlc
和ert.tlc.
.从这些基本系统目标文件派生的系统目标文件可以具有额外的标题依赖项。来自块体,嵌入式目标和自定义S函数的块的代码生成可以引入额外的标题依赖项。
头文件 | GRT或ERT系统目标文件的描述和包含条件 |
---|---|
|
定义与内置数据类型对应的枚举类型 当一个或多个条件适用时,GRT和ert生成的代码包括这个文件:
|
|
定义外部模式的数据结构 GRT和ERT生成的代码包括当您的模型配置启用外部模式时的文件。 |
|
定义外部模式函数 GRT和ERT生成的代码包括当您的模型配置启用外部模式时的文件。 |
|
为非含诺S函数提供固定点支持金宝app GRT生成的代码包括此文件。 ERT生成的代码包括以下文件:
|
|
包含定时桥的类型定义 当构建参考模型或构建包含模型块的模型时,GRT和ert生成的代码包括这个文件。 |
|
定义特定于模型的数据类型 GRT和ERT生成的代码包括此文件。 |
|
包含多字范围数据类型及其字大小块的类型定义 当一个或多个条件适用时,GRT和ert生成的代码包括这个文件:
对于使用多字数据类型的模型,如果数据类型的长度远远超过最后生成代码的模型,则代码生成器会覆盖该文件。为避免覆盖此文件,请设置:
|
|
金宝app支持非限定的数量 当这些条件中的一个或多个适用时,GRT生成的代码包括以下文件:
当一个或多个条件适用时,ert生成的代码包括这个文件:
|
|
包含特殊数学常量(如π和)的类型定义E.),并定义 GRT和ert生成的代码包含这个文件:
|
|
金宝app支持Mat文件日志记录,包括: rt_mxclassid.h rtw_matlogging.h GRT生成的代码包括此文件。 ERT生成的代码包括融合配置选择参数时的此文件MAT文件日志记录.看到MAT文件日志记录. |
|
定义 当代码包含时,GRT和ert生成的代码包含这个文件 |
|
金宝app支持连续时间 当代码包含时,GRT生成的代码包括此文件 当您的模型配置选择参数时,ert生成的代码包括这个文件金宝app支持:连续时间当代码尚未包含 |
|
金宝app支持外部模式 当代码包含时,GRT生成的代码包括此文件 当您的模型配置选择外部模式时,以及当代码还没有包含时,ert生成的代码将包含此文件 |
|
金宝app支持MAT-file日志 当代码包含时,GRT生成的代码包括此文件 当代码包括时,ERT生成的代码包括此文件 |
|
金宝app支持连续状态 当代码包含时,GRT生成的代码包括此文件 当您的模型配置选择参数时,ert生成的代码包括这个文件金宝app支持:连续时间当代码尚未包含 |
|
定义代码生成器数据类型 GRT生成的代码包括此文件。使用文件的详细版本,包括 ert生成的代码包括这个文件。看到RTWTYPES.H.. 当你启用(之前禁用)支持以下功能时,代码生成器会覆盖之前生成的rtwtypes.h:金宝app
为了避免重写
|
|
金宝app支持调用使用 limits.h string.h tmwtypes.h simstruc_types.h GRT生成的代码包括此文件。 ERT生成的代码包括以下文件:
|
|
提供生成代码使用的定义,并包含头文件: Rtw_matlogging.h rtw_extmode.h rtw_continuous.h rtw_solver.h sysran_type .h 当代码包含时,GRT生成的代码包括此文件 ert生成的代码不包括这个文件。导, |
|
金宝app支持外部模式 当代码包含时,GRT生成的代码包括此文件 当您的模型配置选择外部模式时,以及当代码还没有包含时,ert生成的代码将包含此文件 |
|
包含触发器上升、下降或两者之一的被触发子系统的模型的过零定义。文件仅在模型需要时生成,由触发器信号的数据类型决定。例如,如果触发器信号的数据类型为布尔型,则不需要过零检测。 GRT生成的代码不包括这个用于GRT代码生成目标的文件。 当一个模型有一个有条件执行的子系统(其中触发器使用零交叉检测)时,ert生成的代码包括这个文件。 如果生成,内容 |