Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

slbuild

为模型编译独立可执行文件或模型引用目标

说明

示例

slbuild(model) 使用当前配置参数设置从指定模型编译独立的 Simulink® Coder™ 二进制可执行文件。如果未加载模型,则在启动编译过程之前,slbuild 会加载模型。

slbuild(model,buildSpec) 根据指定的代码生成操作,基于模型编译独立的 Simulink Coder 二进制可执行文件。

示例

slbuild(model,Name,Value) 根据一个或多个名称-值参数指定的模型,编译一个独立的 Simulink Coder 二进制可执行文件。

示例

blockHandle = slbuild(subsystem) 使用您的模型的当前配置参数设置,生成子系统代码并编译一个 Simulink Coder 二进制可执行文件。如果所选系统目标文件创建了一个 S-Function 模块,该函数将返回自动生成的 S-Function 封装程序的非空模块句柄。在运行命令之前,必须打开或加载父模型。

示例

blockHandle = slbuild(subsystem,'Mode','ExportFunctionCalls') 从子系统生成代码,其中包括可以导出为外部应用程序代码的函数调用。此命令需要 Embedded Coder®。如果 Create block 配置参数设置为 “SIL”,该函数将返回一个 SIL 模块的句柄。然后,您可以使用 SIL 模块进行数值等效性测试。

示例

blockHandle = slbuild(subsystem,Name,Value) 生成子系统代码,并根据一个或多个名称-值参数的指定编译一个 Simulink Coder 二进制可执行文件。

示例

全部折叠

为模型 rtwdemo_rtwintro 生成 C 代码。

slbuild('rtwdemo_rtwintro')
% Same operation as ...
% slbuild('rtwdemo_rtwintro','StandaloneCoderTarget') 

对于一般实时 (GRT) 目标,编码器生成以下代码文件并将它们放在文件夹 rtwdemo_rtwintro_grt_rtwslprj/grt/_sharedutils 中。

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

rtwdemo_rtwintro.c

rtwdemo_rtwintro.h

rtwdemo_rtwintro_private.h

rtwdemo_rtwintrotypes.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

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

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

此示例说明如何使用 slbuild 为两个模型 sldemo_mdlref_depgraphrtwdemo_counter 生成可执行代码。sldemo_mdlref_depgraph 是引用模型的顶层模型。该示例还说明如何并行编译引用模型。

创建一个本地文件夹。

if exist(fullfile('.','myTempFolder'),'dir')
    rmdir('myTempFolder','s')
end
mkdir myTempFolder
cd myTempFolder

将引用模型的 sldemo_mdlref_depgraph 复制到该本地文件夹。

src_dir = fullfile(matlabroot, ...
                   'toolbox', ...
                   'simulink', ...
                   'simdemos', ...
                   'simfeatures', ...
                   'modelreference');
copyfile(fullfile(src_dir, ...
                  'sldemo_mdlref_depgraph.slx'), ...
                  '.');

启用 sldemo_mdlref_depgraph 引用的模型的并行编译。

load_system('sldemo_mdlref_depgraph')
set_param('sldemo_mdlref_depgraph', ...
'EnableParallelModelReferenceBuilds', 'on');

为并行编译引用模型初始化 MATLAB® 工作进程。

set_param('sldemo_mdlref_depgraph', ...
          'ParallelModelReferenceMATLABWorkerInit', ...
          'Copy Base Workspace');

编译模型。

slbuild({'sldemo_mdlref_depgraph', 'rtwdemo_counter'})

myTempFolder 中,编译过程创建独立的可执行文件 sldemo_mdlref_depgraph.exertwdemo_counter.exe

对于每个模型,命令行窗口会在编译过程中显示编译摘要。

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

slbuild('rtwdemo_mdlreftop','StandaloneCoderTarget', ...
    'ForceTopModelBuild',true)

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

rtwdemo_rtwintro
slbuild('rtwdemo_rtwintro/Amplifier')

代码生成器在 Amplifier_grt_rtwslprj/grt/_sharedutils 文件夹中生成代码文件。

在您的当前工作文件夹中,编译过程会创建一个可执行文件 (Amplifier.exe)。

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

rtwdemo_exporting_functions
set_param('rtwdemo_exporting_functions','GenCodeOnly','off');
slbuild('rtwdemo_exporting_functions/rtwdemo_subsystem','Mode','ExportFunctionCalls')

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

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

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

创建 SIL 模块。

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

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

输入参数

全部折叠

如果将模型名称指定为句柄或字符向量,则编译过程会创建一个独立的可执行文件或模型引用目标。

如果通过句柄或字符向量的元胞数组指定多个模型,编译过程会对元胞数组中的每个模型应用 buildSpec

示例: gcs

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

您可以通过由句柄或字符向量组成的元胞数组来指定多个子系统

示例: 'rtwdemo_exporting_functions/rtwdemo_subsystem'

buildSpec 指示代码生成器对模型和编译过程执行所选的编译操作:

  • 遵循 Configuration Parameters 对话框的 Model Referencing 窗格上 Rebuild 参数的设置。

  • 仅当您编译模型引用 Simulink Coder 目标时,才需要 Simulink Coder 许可证;如果您仅编译模型引用仿真目标,则不需要许可证。

buildSpec 参数必须是以下项之一。

buildSpec编译操作

'StandaloneCoderTarget'

使用当前模型配置设置为指定模型编译独立的 Simulink Coder 二进制可执行文件。它还为引用模型编译模型引用编码器目标。

如果指定的模型还未加载,则在启动编译过程之前,slbuild 会加载它。

'ModelReferenceSimTarget'

编译模型引用仿真目标(不需要 Simulink Coder 许可证)。

'ModelReferenceCoderTarget'

编译模型引用 Simulink Coder 目标和相应的模型引用仿真目标。

'ModelReferenceCoderTargetOnly'

仅编译模型引用 Simulink Coder 目标。

'CleanTopModel'

清理出足够的模型编译区域以便在执行下一个编译时触发顶层模型代码的重新生成。

示例: 'ModelReferenceSimTarget'

名称-值对组参数

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

示例: 'UpdateThisModelReferenceTarget','Force'

模型引用生成的条件重新编译选项,指定为由 'UpdateThisModelReferenceTarget''Force''IfOutOfDateOrStructuralChange''IfOutOfDate' 组成的以逗号分隔的对组。

此选项仅适用于指定的模型,不适用于指定模型引用的任何模型。

'UpdateThisModelReferenceTarget' 值等效的重新编译选项重新编译操作

'Force'

Always

无条件重新编译该模型。

'IfOutOfDateOrStructuralChange'

If any changes detected

如果构建过程检测到任何更改,将重新编译模型。

'IfOutOfDate'

If any changes in known dependencies detected

如果构建过程检测到此模型的已知依赖关系中发生任何更改,将重新编译模型。

有关不同重新编译选项的详细信息,请参阅 Rebuild

示例: 'UpdateThisModelReferenceTarget','Force'

依存关系

要使用此选项,请将 buildSpec 设置为 'ModelReferenceSimTarget''ModelReferenceCoderTarget''ModelReferenceCoderTargetOnly'

数据类型: char | string

强制编译模型层次结构的顶层模型的选项,指定为由 'ForceTopModelBuild'truefalse 组成的以逗号分隔的对组。

将值设置为 true 会指示代码生成器生成代码并为模型层次结构的顶层模型编译可执行文件,而不考虑模型校验和与参数设置。

示例: 'ForceTopModelBuild',true

依存关系

要使用此选项,请将 buildSpec 设置为 'StandaloneCoderTarget'

数据类型: logical

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

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

  • true - 仅生成代码。

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

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

  • 'Normal' - 不导出函数调用。

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

示例: slbuild(subsystem,'Mode','ExportFunctionCalls','ExportFunctionFileName', fcnname)

显示编译信息的选项,指定为由 'OpenBuildStatusAutomatically'truefalse 组成的以逗号分隔的对组。

要在 Build Status 窗口中显示编译信息,请指定 true。默认值为 false。有关使用状态窗口的详细信息,请参阅Monitor Parallel Building of Referenced Models (Simulink Coder)

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

依存关系

要使用此选项,请将 buildSpec 设置为 'StandaloneCoderTarget'

数据类型: logical

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

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

  • false - 不对生成的 C 代码进行模糊处理。

用于编译模型引用仿真目标的选项,指定为由 'IncludeModelReferenceSimulationTargets'truefalse 组成的以逗号分隔的对组。

依存关系

要使用此选项,请将 buildSpec 设置为 'StandaloneCoderTarget'

数据类型: logical

输出参数

全部折叠

自动生成的 S-Function 封装程序模块的模块句柄。

兼容性注意事项

全部展开

R2020b 中的行为有变化

从 R2019a 起不建议使用

扩展功能

在 R2006a 之前推出