Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

rtwbuild

从模型中编译生成的代码。

说明

示例

rtwbuild(model) 根据当前模型配置参数设置从 model 生成代码。如果 model 尚未加载到 MATLAB® 环境中,rtwbuild 会在生成代码之前加载它。

如果清除 Generate code only 模型配置参数,该函数将生成代码并编译可执行映像文件。

为了减少代码生成时间,在重新编译模型时,rtwbuild 提供增量模型编译。代码生成器仅在模型或子模型自最近一次模型编译后有变动的情况下才重新编译它们。要强制实施顶层模型编译,请参阅 'ForceTopModelBuild' 参数。

示例

rtwbuild(model,Name,Value) 使用由一个或多个 Name,Value 对组参数指定的其他选项。

示例

rtwbuild(subsystem) 根据当前模型配置参数设置从 subsystem 生成代码。在开始编译之前,打开(或加载)父模型。

如果清除 Generate code only 模型配置参数,该函数将生成代码并编译可执行映像文件。

示例

rtwbuild(subsystem,'Mode','ExportFunctionCalls') 从包含可导出为外部应用程序代码的函数调用的 subsystem 生成代码(需要有 Embedded Coder®)。

示例

如果 Create block 配置参数设置为 “SIL” 并且您有 Embedded Coder,则 blockHandle = rtwbuild(subsystem,'Mode','ExportFunctionCalls') 返回为从指定子系统生成的代码创建的 SIL 模块的句柄。然后,您可以使用 SIL 模块进行数值等效性测试。

示例

全部折叠

为模型 rtwdemo_rtwintro 生成 C 代码。

rtwbuild('rtwdemo_rtwintro')

对于 GRT 系统目标文件,代码生成器生成以下代码文件,并将它们放在文件夹 rtwdemo_rtwintro_grt_rtwslprj/grt/_sharedutils 中。

模型文件共享文件接口文件其他文件

rtwdemo_rtwintro.c

rtwdemo_rtwintro.h

rtwdemo_rtwintro_private.h

rtwdemo_rtwintrotypes.h

rtGetInf.c

rtGetInf.h

rtGetNaN.c

rtGetNaN.h

rt_nonfinite.c

rt_nonfinite.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

rt_logging.c

如果应用以下模型配置参数设置,代码生成器将生成其他结果。

参数设置结果
Code Generation > Generate code only 未选中可执行映像文件 rtwdemo_rtwintro.exe
Code Generation > Report > Create code generation report 处于选中状态报告提供有关下列各项的信息和链接:生成的代码文件,子系统和代码接口报告,入口函数、输入端口、输出端口、接口参数和数据存储

rtwdemo_mdlreftop 生成代码和构建可执行映像文件,它引用模型 rtwdemo_mdlrefbot 而不管模型校验和与参数设置如何。

rtwbuild('rtwdemo_mdlreftop', ...
    'ForceTopModelBuild',true)

向模型 rtwdemo_mdlreftop 引入错误,并将模型保存为 rtwdemo_mdlreftop_witherr。在为模型 rtwdemo_mdlreftop_witherr 生成代码和编译可执行映像文件时,将在 Diagnostic Viewer 和命令行窗口中显示编译错误消息。

rtwbuild('rtwdemo_mdlreftop_witherr', ...
    'OkayToPushNags',true)

为模型 rtwdemo_rtwintro 中的子系统 Amplifier 生成 C 代码。

rtwbuild('rtwdemo_rtwintro/Amplifier')

对于 GRT 目标,代码生成器生成以下代码文件并将它们放在文件夹 Amplifier_grt_rtwslprj/grt/_sharedutils 中。

模型文件共享文件接口文件其他文件

Amplifier.c

Amplifier.h

Amplifier_private.h

Amplifier_types.h

rtGetInf.c

rtGetInf.h

rtGetNaN.c

rtGetNaN.h

rt_nonfinite.c

rt_nonfinite.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

rt_logging.c

如果应用下表中列出的参数设置,代码生成器会生成列出的结果。

参数设置结果
Code Generation > Generate code only 未选中可执行映像文件 Amplifier.exe
Code Generation > Report > Create code generation report 处于选中状态报告提供有关下列各项的信息和链接:生成的代码文件,子系统和代码接口报告,入口函数、输入端口、输出端口、接口参数和数据存储

要将映像文件导出到外部应用程序代码,请从函数调用子系统编译可执行映像文件。

rtwdemo_exporting_functions
rtwbuild('rtwdemo_exporting_functions/rtwdemo_subsystem','Mode','ExportFunctionCalls')

可执行映像文件 rtwdemo_subsystem.exe 出现在您的工作文件夹中。

从一个函数调用子系统创建一个 SIL 模块,您可以用它来测试从模型中生成的代码。

打开模型 rtwdemo_exporting_functions 中的子系统 rtwdemo_subsystem,并将 Create block 模型配置参数设置为 “SIL”。

创建 SIL 模块。

mysilblockhandle = rtwbuild('rtwdemo_exporting_functions/rtwdemo_subsystem',...
'Mode','ExportFunctionCalls')

代码生成器为生成的子系统代码生成 SIL 模块。您可以将模块添加到提供测试向量或激励输入的环境或测试框架模型中。然后,您可以运行执行 SIL 测试的仿真,并验证 SIL 模块中的生成代码产生的结果与原始子系统相同。

命名从函数调用子系统编译可执行映像文件时生成的初始化函数。

rtwdemo_exporting_functions
rtwbuild('rtwdemo_exporting_functions/rtwdemo_subsystem',...
'Mode','ExportFunctionCalls','ExportFunctionInitializeFunctionName','subsysinit')

初始化函数名称 subsysinit 出现在 rtwdemo_subsystem_ert_rtw/ert_main.c 中。

在生成代码并运行模型 rtwdemo_mdlreftop_witherr 的并行编译时,在 Build Status 窗口中显示编译信息。

rtwbuild('rtwdemo_mdlreftop_witherr', ...
    'OpenBuildStatusAutomatically',true)

输入参数

全部折叠

要为其生成代码或编译可执行映像文件的模型,指定为表示模型名称的对象或字符向量。

示例: 'rtwdemo_exporting_functions'

要为其生成代码或编译可执行映像文件的子系统,指定为表示子系统名称或完整模块路径的字符向量。

示例: 'rtwdemo_exporting_functions/rtwdemo_subsystem'

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须显示在引号内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

示例: rtwbuild('rtwdemo_mdlreftop','ForceTopModelBuild',true)示例: rtwbuild(subsystem,'Mode','ExportFunctionCalls','ExportFunctionInitializeFunctionName', fcnname)

强制重新生成顶层模型代码,指定为 truefalse

操作指定
强制代码生成器为包含引用模型的系统的顶层模型重新生成代码 true
指定代码生成器根据模型和模型参数的更改确定是否重新生成顶层模型代码 false

如果您更改了与外部或自定义代码相关联的项目,例如自定义目标的代码,请考虑强制重新生成顶层模型的代码。例如,如果您更改了下列各项,请将 ForceTopModelBuild 设置为 true

  • TLC 代码

  • S-Function 源代码,包括 rtwmakecfg.m 文件

  • 集成的自定义代码

您也可以通过删除代码生成文件夹中的文件夹(如 slprj)或生成的模型代码文件夹,强制为顶层模型重新生成代码。

在 Diagnostic Viewer 中显示来自编译的错误消息,指定为 truefalse

操作指定
在 Diagnostic Viewer 和命令行窗口中显示编译错误消息true
仅在命令行窗口中显示编译错误消息false

如果未指定值,Code Generation 窗格中的 Generate code only (GenCodeOnly) 选项将控制编译过程行为。

如果指定值,该参数将覆盖 Code Generation 窗格中的 Generate code only (GenCodeOnly) 选项。

操作指定

仅生成代码。

true

生成代码并编译可执行文件。

false

如果您有 Embedded Coder,将从其中包含可导出为外部应用程序代码的函数调用的 subsystem 生成代码。

为指定的子系统命名导出的初始化函数。

在 Build Status 窗口中显示编译信息,指定为 truefalse。有关使用 Build Status 窗口的详细信息,请参阅Monitor Parallel Building of Referenced Models

Build Status 窗口支持引用模型层次结构的并行编译。不要使用 Build Status 窗口进行串行编译。

操作指定
在 Build Status 窗口中显示编译信息true
无操作false

指定是否生成经过模糊处理的 C 代码,指定为 truefalse

操作指定
生成经过模糊处理的 C 代码,您可以将其与第三方共享,从而降低涉及知识产权问题的可能性。true
无操作。false

输出参数

全部折叠

为生成的子系统代码创建的 SIL 模块的句柄。仅当以下两个条件都得到满足时才返回:

  • 您得到使用 Embedded Coder 软件的许可。

  • Create block 模型配置参数设置为 “SIL”。

提示

您可以通过以下方式启动代码生成和编译过程:

  • Ctrl+B

  • 选择 Code > C/C++ Code > Build Model

  • 从 MATLAB 命令行调用 slbuild 命令。

扩展功能

在 R2009a 中推出