文档

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

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

生成的源文件和头文件之间的依赖关系如图所示。箭头从文件指向它所包含的文件。其他依赖也存在,例如,对Simulink的依赖金宝app®头文件tmwtypes.h而且simstruc_types.h,加上C或c++库文件。图只映射在构建文件夹中生成的那些文件之间的包含关系。这些文件可以引用位于代码生成文件夹中的实用程序和模型引用代码。有关构建过程创建的文件夹和文件的更多信息,请参见管理生成过程文件夹(金宝appSimulink Coder)和管理构建过程文件(金宝app仿真软件编码器)。

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

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

父系统头文件(模型.h)包括子子系统头文件(子系统.h).在更分层的模型中,子系统类似地在模型层次结构中包含它们的子头文件。因此,子系统能够递归地查看到它们的后代子系统和查看到根系统,因为每子系统.c子系统. cpp包括模型.h而且模型_private.h

图中为文件模型.h模型_private.h,子系统.h依赖于头文件rtwtypes.h.如果您使用的系统目标文件不是基于ERT系统目标文件,那么您生成的源文件可能具有附加的依赖关系tmwtypes.h而且simstruc_types.h

系统头文件

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

代码生成器包含一些用于广泛定义的情况的系统头文件。例如,生成的代码包括< stddef.h >当模型包含一个需要此头文件的实用函数时。这种方法有助于识别头文件依赖项:

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

  2. 使用文件内查找实用程序(例如,grep实用程序)来搜索.c而且.h的文件__sharedutils文件夹# include.搜索结果列出了具有头文件依赖关系的实用程序。

  3. 使用这些信息来确定要从模型中删除的实用程序,并减少生成代码中的头文件依赖关系。

有关更多信息,请参见为定点函数生成共享效用代码(金宝app仿真软件编码器)。

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

< math.h >

定义数学常数

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

当代码遵循求解器的模型配置时,ert生成的代码包含此文件停止时间和:

  • 您的模型配置启用参数MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

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

< float.h >

提供浮点数学函数

当您的模型包含浮点数学函数时,grt生成的代码将包含此文件。

当您的模型包含浮点数学函数时,ert生成的代码将包含此文件,除非代码替换库条目覆盖了该函数。有关更多信息,请参见选择一个代码替换库(金宝app仿真软件编码器)。

< stddef.h >

定义零

当您的模型包含一个需要此文件的实用函数时,GRT和ert生成的代码包含此文件。

< stdio . h >

提供文件I/O功能

当您的模型包含一个到文件块。

在以下任何情况下,ert生成的代码都包含此文件:

  • 您的模型包含到文件块。

  • 您的模型配置启用参数MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

< stdlib.h >

的整数版本等实用函数div ()而且abs ()

grt生成的代码包含以下任何一种情况:

  • 您的模型包括一个状态流®图表。

  • 您的模型包括配置的数学功能块国防部()快速眼动()的调用div ()

在以下任何情况下,ert生成的代码都包含此文件:

  • 您的模型包括一个状态流图,并且您可以选择模型配置参数金宝app支持:浮点数

  • 您的模型包括配置的数学功能块国防部()快速眼动()的调用div ()

< string.h >

提供内存功能,如memset ()而且memcpy ()

当您调用模型初始化代码时,grt生成的代码包含这个文件memset ()

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

要查看相关块的列表,在命令窗口中输入:

showblockdatatypetable

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

代码生成器头文件

表中生成的头文件的依赖关系应用于系统目标文件grt.tlc而且ert.tlc.从这些基本系统目标文件派生的系统目标文件可以具有附加的头依赖项。从块集、嵌入式目标和自定义s函数生成块的代码会引入额外的头依赖。

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

内装式_typeid_types.h

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

当满足以下一个或多个条件时,GRT和ert生成的代码包含此文件:

  • 您的模型包含一个使用消息的状态流图。

  • 您的模型配置支持:MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

  • 您的模型配置选择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-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

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

对于使用多字数据类型的模型,如果数据类型的长度大于最后生成代码的模型的长度,那么代码生成器将覆盖该文件。为了避免覆盖该文件,设置:

  • ERTMultiwordTypeDef“用户定义”

  • ERTMultiwordLength到你的模型所要求的最大长度。

rtGetInf.h

rtGetNaN.h

rt_nonfinite.h

金宝app支持非有限数

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

  • 你的模型包含s函数。

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

  • 您的模型配置选择参数MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

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

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

  • 你的模型包含s函数。

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

  • 您的模型配置选择参数MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

rt_defines.h

包含特殊数学常数的类型定义(例如π和e),并定义UNUSED_PARAMETER

GRT和ert生成的代码包含以下任何一种情况:

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

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

rt_logging.h

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

Rtwtypes.h builtin_typeid_types.h multiword_types.h rt_mxclassid.h rtw_matlogging.h

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

当您选择模型配置参数时,ert生成的代码包含此文件MAT-file日志.看到MAT-file日志(金宝app仿真软件编码器)。

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文件日志记录

当grt生成的代码包含simstruc_types.h而且rt_logging.h

当ert生成的代码包含rt_logging.h

rtw_solver.h

金宝app支持连续状态

当grt生成的代码包含simstruc_types.h

当您的模型配置选择参数时,ert生成的代码包含此文件金宝app支持:连续时间当代码中没有包含simstruc.h

rtwtypes.h

定义代码生成器数据类型

grt生成的代码包含这个文件。使用文件的详细版本,其中包括tmwtypes.h而且simstruc_types.h.看到simstruc_types.h的依赖关系。

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

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

  • 复数(金宝appSupportComplex设置为“上”).

  • 非内联s函数(金宝appSupportNonInlinedSFcns设置为“上”

避免重写rtwtypes.h,你可以:

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

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

simstruc.h

金宝app方法支持调用非内联s函数Simstruct定义;还包括:

Limits.h string.h tmwtypes.h simstruc_types.h

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

在以下任何情况下,ert生成的代码都包含此文件:

  • 您的模型使用非内联s函数。

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

simstruc_types.h

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

Rtw_matlogging.h rtw_extmode.h rtw_continue .h rtw_solver.h sysran_types.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总是一样的。

相关的话题