主要内容

管理构建过程文件依赖关系

控制生成代码大小的一个重要方法是管理包含文件(依赖项)的数量和大小。为了减少生成代码所需的系统头文件和生成的头文件的数量,理解构建过程生成的依赖关系和导致依赖关系的条件是很有帮助的。

生成的源文件和头文件之间的依赖关系如图所示。从文件点指向它包含的文件的箭头。其他依赖项也存在,例如,在Simulink上金宝app®标题文件tmwtypes.h.simstruc_types.h,加上C或c++库文件。这个图只映射了在构建文件夹中生成的那些文件之间的包含关系。这些文件可以引用位于代码生成文件夹中的实用程序和模型引用代码。有关构建过程创建的文件夹和文件的详细信息,请参见管理构建过程文件夹管理构建过程文件

这两个表标识了控制GRT和ERT目标依赖项文件创建的条件。要管理与构建相关的依赖项,请考虑如何将这些条件应用于您的模型和代码生成过程。然后,配置模型参数和代码生成选项来管理构建过程文件的依赖关系。

由于使用基于ert的系统目标文件生成的代码的文件打包选项的不同,文件依赖关系与使用基于grt的系统目标文件生成的代码的文件打包略有不同。看到管理生成的代码模块的文件包(嵌入式编码器)

父系统头文件(模型.h)包括子子系统标题文件(子系统.h)。在更多分层的模型中,子系统类似地包括模型层次结构中的子节点文件。因此,子系统能够在其后代子系统中递归地观看,并因为每一个子系统.c子系统.cpp.包括模型.h模型_private.h

在图中,文件模型.h模型_private.h,子系统.h取决于标题文件RTWTYPES.H..如果使用不基于ERT系统目标文件的系统目标文件,则生成的源文件可能具有额外的依赖关系tmwtypes.h.simstruc_types.h

系统头文件

系统头文件使遗留代码或外部代码可以使用函数声明、类型定义和宏定义。有些代码生成场景需要包含特定于代码生成器产品的头文件。

代码生成器包括一些用于广义定义的情况的系统头文件。例如,生成的代码包括当模型包含需要此头文件的实用程序函数时。此方法有助于识别标题文件依赖项:

  1. 设置模型配置参数共享代码的位置“共享位置”然后建立模型。代码生成器将实用程序函数放入其中__sharedutils文件夹。

  2. 使用查找文件(例如,grep实用程序)来搜索.c.h文件中的文件__sharedutils文件夹#包括.搜索结果列出了标题文件依赖项的实用程序。

  3. 使用此信息来识别要从模型中删除的实用工具,并减少生成代码中的头文件依赖关系。

有关更多信息,请参见生成用于固定点函数的共享实用程序代码

系统标题文件 GRT或ERT系统目标文件的描述和包含条件

< math.h >

定义数学常数

grt生成的代码不包括这个文件。

当代码符合求解器的模型配置时,ert生成的代码包括这个文件停止时间和:

  • 您的模型配置启用参数MAT文件日志记录.看到MAT文件日志记录

  • 您的模型配置启用参数外部模式

提供浮点数学函数

当模型包含浮点数学函数时,grt生成的代码就包含这个文件。

当您的模型包含浮点数学函数时,ert生成的代码将包含此文件,除非代码替换库条目覆盖该函数。有关更多信息,请参见选择代码替换库

定义null.

GRT和ERT生成的代码包括此文件,当您的模型包含需要此文件的实用程序函数时。

< stdio . h >

提供文件I/O功能

当你的模型包含一个到文件堵塞。

ERT生成的代码包括以下文件:

提供实用程序功能,例如整数版本div ()abs ()

grt生成的代码包含这个文件:

  • 您的模型包括一个statflow®图表。

  • 您的模型包括配置的数学函数块国防部()快速眼动(),生成对的调用div ()

ERT生成的代码包括以下文件:

  • 您的模型包括StateFlow图表,您可以选择Model Configuration参数金宝app支持:浮点数

  • 您的模型包括配置的数学函数块国防部()快速眼动(),生成对的调用div ()

< string.h >

提供记忆功能,例如Memset()memcpy ()

当您的模型初始化代码调用时,GRT生成的代码包括此文件Memset()

当块或模型初始化代码调用时,ert生成的代码包括这个文件memcpy ()Memset()

有关相关块列表,请在命令窗口中键入:

showblockdatatypetable

寻找带有N2音符的方块。省略对Memset()从模型初始化代码中,选择模型配置参数删除根级I / O零初始化删除内部数据零初始化

代码生成器头文件

生成头文件的表中的依赖项应用于系统目标文件grt.tlcert.tlc..从这些基本系统目标文件派生的系统目标文件可以具有额外的标题依赖项。来自块体,嵌入式目标和自定义S函数的块的代码生成可以引入额外的标题依赖项。

头文件 GRT或ERT系统目标文件的描述和包含条件

内装式_typeid._types.h

定义与内置数据类型对应的枚举类型

当一个或多个条件适用时,GRT和ert生成的代码包括这个文件:

  • 您的模型包含使用消息的状态溢图。

  • 您的模型配置启用:MAT文件日志记录.看到MAT文件日志记录

  • 您的模型配置选择C API选项代码生成>界面

dt_info.h.

定义外部模式的数据结构

GRT和ERT生成的代码包括当您的模型配置启用外部模式时的文件。

ext_work.h

定义外部模式函数

GRT和ERT生成的代码包括当您的模型配置启用外部模式时的文件。

fixedpoint.h

为非含诺S函数提供固定点支持金宝app

GRT生成的代码包括此文件。

ERT生成的代码包括以下文件:

  • 你的模型使用了非线性s函数。

  • 您的模型配置选择参数经典的调用接口

模型_reference_types.h

包含定时桥的类型定义

当构建参考模型或构建包含模型块的模型时,GRT和ert生成的代码包括这个文件。

模型_types.h

定义特定于模型的数据类型

GRT和ERT生成的代码包括此文件。

多字_types.h

包含多字范围数据类型及其字大小块的类型定义

当一个或多个条件适用时,GRT和ert生成的代码包括这个文件:

  • 您的模型使用多字数据类型。

  • 您的模型配置选择参数MAT文件日志记录.看到MAT文件日志记录

  • 您的模型配置选择外部模式

对于使用多字数据类型的模型,如果数据类型的长度远远超过最后生成代码的模型,则代码生成器会覆盖该文件。为避免覆盖此文件,请设置:

  • umywordtypedef.'用户自定义'

  • 多单程到模型所需的最大长度。

RtgetInf.h.

RTLETNAN.H.

RT_NONFINITE.H.

金宝app支持非限定的数量

当这些条件中的一个或多个适用时,GRT生成的代码包括以下文件:

  • 你的模型包含s函数。

  • 生成的代码需要非有限的数字。

  • 您的模型配置选择参数MAT文件日志记录.看到MAT文件日志记录

  • 您的模型配置选择参数经典的调用接口

当一个或多个条件适用时,ert生成的代码包括这个文件:

  • 你的模型包含s函数。

  • 生成的代码需要非有限的数字。

  • 您的模型配置选择参数MAT文件日志记录.看到MAT文件日志记录

rt_defines.h

包含特殊数学常量(如π和)的类型定义E.),并定义unused_pa​​rameter.

GRT和ert生成的代码包含这个文件:

  • 生成的代码需要一个数学常量定义。

  • 函数体不访问所需的模型函数参数。

RT_LOGGING.H.

金宝app支持Mat文件日志记录,包括:

rt_mxclassid.h rtw_matlogging.h

GRT生成的代码包括此文件。

ERT生成的代码包括融合配置选择参数时的此文件MAT文件日志记录.看到MAT文件日志记录

RT_MXCLASSID.H.

定义mxArray类ID枚举

当代码包含时,GRT和ert生成的代码包含这个文件RT_Logging.c.

RTW_Continuous.h.

金宝app支持连续时间

当代码包含时,GRT生成的代码包括此文件simstruc_types.h

当您的模型配置选择参数时,ert生成的代码包括这个文件金宝app支持:连续时间当代码尚未包含simstruc.h

rtw_extmode.h

金宝app支持外部模式

当代码包含时,GRT生成的代码包括此文件simstruc_types.h

当您的模型配置选择外部模式时,以及当代码还没有包含时,ert生成的代码将包含此文件simstruc.h

RTW_MATLOGGING.H.

金宝app支持MAT-file日志

当代码包含时,GRT生成的代码包括此文件simstruc_types.hRT_LOGGING.H.

当代码包括时,ERT生成的代码包括此文件RT_LOGGING.H.

rtw_solver.h

金宝app支持连续状态

当代码包含时,GRT生成的代码包括此文件simstruc_types.h

当您的模型配置选择参数时,ert生成的代码包括这个文件金宝app支持:连续时间当代码尚未包含simstruc.h

RTWTYPES.H.

定义代码生成器数据类型

GRT生成的代码包括此文件。使用文件的详细版本,包括tmwtypes.h.

ert生成的代码包括这个文件。看到RTWTYPES.H.

当你启用(之前禁用)支持以下功能时,代码生成器会覆盖之前生成的rtwtypes.h:金宝app

  • 复数(金宝app支持通行设置为'在')。

  • 非束缚的S函数(金宝appSpectsNONINLINEDSFCNS.设置为'在'的)

为了避免重写RTWTYPES.H.,您可以:

  • 即使模型当前未使金宝app用复杂数据类型,为模型指定对模型的复杂数据类型的支持。

  • 禁用对非内联s函金宝app数的支持。在这种情况下,使用非线性s函数会产生错误。为了避免错误,将s函数转换为内联的s函数。有关更多信息,请参见内联S-Functions(嵌入式编码器)

simstruc.h

金宝app支持调用使用Simstruct定义;还包括:

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

GRT生成的代码包括此文件。

ERT生成的代码包括以下文件:

  • 你的模型使用了非线性s函数。

  • 您的模型配置选择参数经典的调用接口

simstruc_types.h

提供生成代码使用的定义,并包含头文件:

Rtw_matlogging.h rtw_extmode.h rtw_continuous.h rtw_solver.h sysran_type .h

当代码包含时,GRT生成的代码包括此文件RTWTYPES.H.

ert生成的代码不包括这个文件。导,RTWTYPES.H.包含定义,和模型.h包含标题文件。

sysran_types.h

金宝app支持外部模式

当代码包含时,GRT生成的代码包括此文件simstruc_types.h

当您的模型配置选择外部模式时,以及当代码还没有包含时,ert生成的代码将包含此文件simstruc.h

zero_crossing_types.h

包含触发器上升、下降或两者之一的被触发子系统的模型的过零定义。文件仅在模型需要时生成,由触发器信号的数据类型决定。例如,如果触发器信号的数据类型为布尔型,则不需要过零检测。

GRT生成的代码不包括这个用于GRT代码生成目标的文件。

当一个模型有一个有条件执行的子系统(其中触发器使用零交叉检测)时,ert生成的代码包括这个文件。

如果生成,内容zero_crossing_types.h总是一样的。

相关的话题