主要内容

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®。如果创建模块配置参数设置为 SIL,该函数在 SIL 模式下返回一个 Model 模块的句柄。然后,您可以使用 Model 模块进行数值等效性测试。

示例

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

示例

示例

全部折叠

为模型 CounterModel 生成 C 代码。

openExample('CounterModel')
slbuild('CounterModel')
% Same operation as ...
% slbuild('CounterModel','StandaloneCoderTarget') 

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

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

CounterModel.c

CounterModel.h

CounterModel_private.h

CounterModeltypes.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

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

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

此示例说明如何使用 slbuild 为两个模型 CounterModelParallelBuildA1 生成可执行代码。ParallelBuildA1 是引用模型的顶层模型,并配置为并行构建所引用的模型。

打开模型。

openExample("simulinkcoder/RegisterAndUseToolchainToBuildExecutableExample", ...
             supportingfile="CounterModel.slx")
openExample("simulinkcoder/MonitorBuildProcessForModelHierarchyExample", ...
             supportingfile="ParallelBuildA1.slx")

编译模型。

slbuild({'CounterModel', 'ParallelBuildA1'})
### Starting build procedure for: CounterModel
### Successful completion of build procedure for: CounterModel

Build Summary

Top model targets:

Model         Build Reason                                         Status                        Build Duration
===============================================================================================================
CounterModel  Information cache folder or artifacts were missing.  Code generated and compiled.  0h 0m 37.136s 

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 40.889s
### Searching for referenced models in model 'ParallelBuildA1'.
### Found 3 model reference targets to update.
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to parallel pool with 4 workers.
### Initializing workers for parallel model reference build.
### Parallel worker initialization complete.
### Starting parallel model reference code generation build.
### Successfully updated the model reference code generation target for: ParallelBuildB1
### Successfully updated the model reference code generation target for: ParallelBuildB2
### Successfully updated the model reference code generation target for: ParallelBuildB3
### Starting build procedure for: ParallelBuildA1
### Successful completion of build procedure for: ParallelBuildA1

Build Summary

Model reference code generation targets:

Model            Build Reason                               Status                        Build Duration
========================================================================================================
ParallelBuildB1  Target (ParallelBuildB1.c) did not exist.  Code generated and compiled.  0h 0m 53.995s 
ParallelBuildB2  Target (ParallelBuildB2.c) did not exist.  Code generated and compiled.  0h 0m 53.985s 
ParallelBuildB3  Target (ParallelBuildB3.c) did not exist.  Code generated and compiled.  0h 0m 53.985s 

Top model targets:

Model            Build Reason                                         Status                        Build Duration
==================================================================================================================
ParallelBuildA1  Information cache folder or artifacts were missing.  Code generated and compiled.  0h 0m 18.998s 

4 of 4 models built (0 models already up to date)
Build duration: 0h 3m 15.417s

对于每个模型,编译过程都会显示编译摘要。

在当前文件夹中,编译过程创建独立的可执行文件 CounterModel.exeParallelBuildA1.exe

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

openExample('simulinkcoder/FilePackagingModelsCodeAndDataExample',...
    'supportingFile','TopModelCode');
slbuild('TopModelCode','StandaloneCoderTarget',...
    'ForceTopModelBuild',true)

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

openExample('CounterModel')
slbuild('CounterModel/Amplifier')

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

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

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

openExample('SimulinkFunctions')
set_param('SimulinkFunctions','GenCodeOnly','off');
slbuild('SimulinkFunctions/util','Mode','ExportFunctionCalls')

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

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

在模型 SimulinkFunctions 中打开子系统 util

代码生成 > 验证 > 高级参数 > 创建模块配置参数设置为 SIL

创建 Model 模块。

openExample('SimulinkFunctions');
set_param('SimulinkFunctions','GenCodeOnly','off');
mysilblockhandle = slbuild('SimulinkFunctions/util',...
'Mode','ExportFunctionCalls')

代码生成器会在一个临时模型中生成 Model 模块。Model 模块的配置如下:

  • 模型名称设置为包含原始子系统内容的新模型的名称。

  • 仿真模式设置为软件在环 (SIL)

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

输入参数

全部折叠

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

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

示例: gcs

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

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

示例: 'SimulinkFunctions/util'

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

  • 遵循“配置参数”对话框的模型引用窗格上 重新编译 参数的设置。

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

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

buildSpec编译操作注释

'StandaloneCoderTarget'

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

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

  • 当您从部署类型菜单中选择组件自动时,这是默认值。

  • 当您从部署类型菜单中选择子组件时,您无法指定此值。

'ModelReferenceCoderTarget'

编译模型引用 Simulink Coder 目标。

  • 当您从部署类型菜单中选择子组件时,这是默认值。

  • 当您从部署类型菜单中选择组件时,您无法指定此值。

'ModelReferenceSimTarget'

编译一个模型引用仿真目标。

不需要 Simulink Coder 许可证。

'CleanTopModel'

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

当您从部署类型菜单中选择子组件时,您无法指定此值。

示例: 'ModelReferenceSimTarget'

名称-值参数

全部折叠

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'UpdateThisModelReferenceTarget','Force'

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

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

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

'Force'

始终

无条件重新编译该模型。

'IfOutOfDateOrStructuralChange'

如果检测到变化

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

'IfOutOfDate'

如果检测到已知依赖关系的变化

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

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

示例: 'UpdateThisModelReferenceTarget','Force'

依赖关系

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

数据类型: char | string

如果顶层模型使用 ERT 或 GRT 系统目标文件,请使用此选项指定编译过程的输出类型。

'BuildOutputType' 值编译操作

'Auto'(默认值)

在代码生成文件夹中,从顶层模型创建一个 Simulink Coder 二进制文件。编译过程的输出类型取决于当前配置参数设置。例如:

'Executable'

在代码生成文件夹中,从顶层模型生成的代码创建一个独立的 Simulink Coder 二进制可执行文件。例如,myModel.exe

'StaticLibrary'

在编译文件夹中,从顶层模型生成的代码创建一个静态库。例如,myModel.lib。该库不包括示例主程序。

'SharedLibrary'

在编译文件夹中,从顶层模型生成的代码创建一个共享库。例如, myModel.dll。该库不包括示例主程序。

有关代码生成和编译文件夹的信息,请参阅管理编译过程文件夹 (Simulink Coder)

示例: 'BuildOutputType' ,'StaticLibrary'

依赖关系

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

数据类型: char | string

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

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

示例: 'ForceTopModelBuild',true

依赖关系

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

数据类型: logical

如果未指定值,代码生成窗格中的仅生成代码 (GenCodeOnly) 选项将控制编译过程行为。

如果指定值,该参量将覆盖代码生成窗格中的仅生成代码 (GenCodeOnly) 选项:

  • true - 仅生成代码。

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

依赖关系

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

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

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

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

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

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

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

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

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

“编译状态”窗口支持引用模型层次结构的并行编译。不要使用“编译状态”窗口进行串行编译。

依赖关系

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

数据类型: logical

指定是否生成经过混淆处理的 C 代码:

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

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

输出参量

全部折叠

自动生成的 S-Function 包装器模块或 Model 模块的模块句柄。

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开