管理构建过程文件依赖项
生成代码大小的一个重要控制是管理包含的文件(依赖项)的数量和大小。为了减少生成代码所需的系统头文件和生成头文件的数量,理解构建过程生成的依赖关系以及导致依赖关系的条件是很有帮助的。
生成的源文件和头文件之间的依赖关系如图所示。箭头从一个文件指向它所包含的文件。其他依赖关系也存在,例如在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
.
系统头文件
系统头文件使函数声明、类型定义和宏定义可用于遗留代码或外部代码。一些代码生成场景需要包含特定于代码生成器产品的头文件。
代码生成器包括一些用于广泛定义的情况的系统头文件。例如,生成的代码包含< stddef.h >
当模型包含需要此头文件的实用程序函数时。这种方法有助于识别头文件依赖关系:
设定模型配置参数共享代码放置来
“共享位置”
然后建立模型。代码生成器将实用程序函数放在__sharedutils
文件夹中。使用文件查找实用程序(例如,grep实用程序)来搜索
.c
而且.h
文件__sharedutils
文件夹# include
.搜索结果列出了具有头文件依赖关系的实用程序。使用此信息识别要从模型中删除的实用程序,并减少生成代码中的头文件依赖关系。
有关更多信息,请参见为定点函数生成共享实用程序代码.
系统头文件 | GRT或ERT系统目标文件的描述和包含条件 |
---|---|
|
定义数学常数 grt生成的代码不包括此文件。 当用于求解器的代码符合模型配置时,ert生成的代码包括此文件停止时间和:
|
|
提供浮点数学函数 当模型包含浮点数学函数时,grt生成的代码将包含此文件。 当模型包含浮点数学函数时,ert生成的代码包含此文件,除非代码替换库条目覆盖了该函数。有关更多信息,请参见选择一个代码替换库. |
|
定义零 当您的模型包含需要此文件的实用程序函数时,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文件日志记录,包括: Rtwtypes.h builtin_typeid_types.h multiword_types.h rt_mxclassid.h rtw_matlogging.h grt生成的代码包括这个文件。 当您建模配置选择参数时,ert生成的代码包括此文件MAT-file日志.看到MAT-file日志. |
|
定义了 当代码包含此文件时,GRT和ert生成的代码包含此文件 |
|
金宝app支持连续时间 grt生成的代码包含此文件时,代码包含 当模型配置选择参数时,ert生成的代码包括此文件金宝app支持:连续时间当代码还没有包含 |
|
金宝app支持外部模式 grt生成的代码包含此文件时,代码包含 当您的模型配置选择外部模式时,以及当代码尚未包含此文件时,ert生成的代码包含此文件 |
|
金宝app支持mat文件日志记录 grt生成的代码包含此文件时,代码包含 ert生成的代码包含此文件时,代码包含 |
|
金宝app支持连续状态 grt生成的代码包含此文件时,代码包含 当模型配置选择参数时,ert生成的代码包括此文件金宝app支持:连续时间当代码还没有包含 |
|
定义代码生成器数据类型 grt生成的代码包括这个文件。使用详细版本的文件,其中包括 ert生成的代码包括这个文件。看到rtwtypes.h. 当你启用(之前禁用)支持以下功能时,代码生成器会覆盖之前生成的rtwtypes.h:金宝app
避免重写
|
|
金宝app类型的非内联s函数 limit .h string.h tmwtypes.h simstruc_types.h grt生成的代码包括这个文件。 当下列情况之一时,ert生成的代码包含此文件:
|
|
提供生成的代码使用的定义,并包括头文件: Rtw_matlogging.h rtw_extmode.h rtw_continue .h rtw_solver.h sysran_types.h grt生成的代码包含此文件时,代码包含 ert生成的代码不包括此文件。导, |
|
金宝app支持外部模式 grt生成的代码包含此文件时,代码包含 当您的模型配置选择外部模式时,以及当代码尚未包含此文件时,ert生成的代码包含此文件 |
|
包含具有触发子系统的模型的过零定义,其中触发器为上升、下降或任意一种。由触发信号的数据类型决定,仅在模型需要时才生成文件。例如,如果触发信号的数据类型为布尔型,则不需要进行过零检测。 GRT生成的代码不包括GRT代码生成目标的此文件。 当模型具有有条件执行的子系统(触发器使用零交叉检测)时,ert生成的代码包括此文件。 的内容 |