转移或共享生成的代码
要转移或共享静态代码和生成的代码文件,您可以使用 packNGo 函数。例如,将生成的代码转移到不提供 MATLAB® 和 Simulink® 产品的开发环境中时,请使用该函数。
打包并转移生成的代码
要打包生成的代码,请执行以下操作:

使用 ZIP 工具检查生成的 ZIP 文件,以验证打包的代码是否已准备好进行转移。
将 ZIP 文件转移到目标开发环境中,并使用 ZIP 工具来解包该文件。要编译解包后的代码,请使用编译工具。
如果目标环境提供 Simulink Coder™ 或 Embedded Coder®,可以使用 codebuild 来编译解包后的代码。
从命令行打包并转移生成的代码
要使用行命令打包和转移生成的代码,请使用以下工作流:
选择 ZIP 文件的结构
在为模型编译生成和打包文件之前,请决定将文件打包为扁平文件夹结构还是分层文件夹结构。默认情况下,packNGo 函数将文件打包在单一的扁平文件夹结构中。
| 如果... | 则使用... |
|---|---|
| 您将文件转移到不使用生成的联编文件的 IDE,或者代码不依赖于所需静态文件的相对位置 | 单一、扁平文件夹结构 |
| 目标开发环境必须保持与源环境相同的文件夹结构,因为它使用生成的联编文件,或者代码依赖于文件的相对位置 | 分层结构 |
如果使用层次结构,则 packNGo 函数会创建两个层级的 zip 文件,即一个主 zip 文件包含以下次级 zip 文件:
mlrFiles.zip- 位于下的文件matlabrootsDirFiles.zip- 位于代码生成文件夹下的文件otherFiles.zip- 不位于或代码生成文件夹下的必需文件matlabroot
次级 zip 文件的路径相对于主 zip 文件的根文件夹,文件夹结构与源开发文件夹结构相同。
选择 ZIP 文件的名称
默认情况下,packNGo 函数将主 zip 文件命名为 。您可以选择指定不同名称。如果指定文件名并省略文件类型扩展名,则该函数会将 model. 追加到您指定的名称。
将生成的代码打包为 ZIP 文件
使用 packNGo 函数和模型的编译信息对象对生成的代码文件进行打包。您可以使用:
以下示例说明如何更改 packNGo 的默认行为。
| 如需执行以下操作... | 指定... |
|---|---|
| 将文件打包的结构更改为分层结构 | packNGo(buildInfo, 'packType' 'hierarchical'); |
重命名主 zip 文件 | packNGo(buildInfo, 'fileName' 'zippedsrcs'); |
将文件打包的结构更改为分层结构并重命名主 zip 文件 | packNGo(buildInfo, 'packType' 'hierarchical'... |
在 zip 文件中包括包含路径上的头文件 | packNGo(buildInfo, 'minimalHeaders' false); |
| 为解析错误和缺失文件生成警告 | packNGo(buildInfo, 'ignoreParseError' true... |
注意
packNGo 函数可以修改作为函数的第一个参量传递的 RTW.BuildInfo 对象中的编译信息。该函数可能会根据存储在模型的编译信息中的源和包含路径找到其他文件,并且将该信息添加到 RTW.BuildInfo 对象中。
检查生成的 ZIP 文件
要验证生成的 ZIP 文件是否已准备好进行转移,请使用 ZIP 工具检查该文件。一些 ZIP 工具允许您在不解包文件的情况下查看文件内容。如果模型代码文件已打包为分层结构且需要解包,则需要解包主 ZIP 文件和次级 ZIP 文件。当您解包次级 ZIP 文件时,文件的相对路径将保留。
转移并解包 ZIP 文件
将 ZIP 文件转移到目标开发环境中,并使用 ZIP 工具来解包该文件。要编译解包后的代码,请使用编译工具。
如果目标环境提供 Simulink Coder 或 Embedded Coder,可以使用 codebuild 来编译解包后的代码。
代码打包示例
此示例说明如何对从模型 CounterModel 生成的代码文件进行打包。
打开模型。
openExample('CounterModel');为模型生成代码。在命令行窗口中,输入:
slbuild(gcs)
指定编译信息对象的路径。
buildInfoFile = fullfile('CounterModel_ert_rtw','buildInfo.mat');
运行
packNGo函数。packNGo(buildInfoFile,packType="allHierarchical", ... includeReport=true);
检查生成的 ZIP 文件
CounterModel.zip。该 ZIP 文件包含一个次级 ZIP 文件sDirFiles.zip。检查
sDirFiles.zip。将 ZIP 文件转移到您的目标文件夹并解包。
要编译解包的代码,请使用
codebuild函数。
限制
packNGo 函数
有关适用于此函数的限制的信息,请参阅 packNGo。
具有非默认扩展名的可执行文件
如果编译过程使用联编文件模板方式,则 packNGo 会使用链接器工具指定的可执行文件扩展名来确定需要打包的二进制工件。
如果生成具有非默认扩展名的可执行文件,请检查该扩展名是否保存在与联编文件模板关联的工具链中。有关详细信息,请参阅将模板联编文件与工具链相关联。
如果编译过程生成的可执行文件的扩展名不同于工具链中保存的扩展名,packNGo 不会打包该可执行文件。