转移或共享生成的代码
要转移或共享静态代码和生成的代码文件,您可以使用 packNGo
函数。例如,将生成的代码转移到不提供 MATLAB® 和 Simulink® 产品的开发环境中时,请使用该函数。
打包并转移生成的代码
要打包生成的代码,请执行以下操作:
将 ZIP 文件转移到目标开发环境中,并使用 ZIP 工具来解包该文件。要编译解包后的代码,请使用编译工具。
如果目标环境提供 Simulink Coder™ 或 Embedded Coder®,可以使用 codebuild
来编译解包后的代码。
从命令行打包并转移生成的代码
要使用行命令打包和转移生成的代码,请使用以下工作流:
选择 ZIP 文件的结构
在为模型编译生成和打包文件之前,请决定将文件打包为扁平文件夹结构还是分层文件夹结构。默认情况下,packNGo
函数将文件打包在单一的扁平文件夹结构中。
如果... | 则使用... |
---|---|
您将文件转移到不使用生成的联编文件的 IDE,或者代码不依赖于所需静态文件的相对位置 | 单一、扁平文件夹结构 |
目标开发环境必须保持与源环境相同的文件夹结构,因为它使用生成的联编文件,或者代码依赖于文件的相对位置 | 分层结构 |
如果使用层次结构,则 packNGo
函数会创建两个层级的 zip
文件,即一个主 zip
文件包含以下次级 zip
文件:
mlrFiles.zip
- 您的
文件夹树中的文件matlabroot
sDirFiles.zip
- 您的编译文件夹中的文件,您在该文件夹中为模型启动了代码生成otherFiles.zip
- 不在
或matlabroot
start
文件夹树中的必需文件
次级 zip
文件的路径相对于主 zip
文件的根文件夹,文件夹结构与源开发文件夹结构相同。
选择 Zip 文件的名称
默认情况下,packNGo
函数将主 zip
文件命名为
。您可以选择指定不同名称。如果指定文件名并省略文件类型扩展名,则该函数会将 model
.
追加到您指定的名称。
在 Zip 文件中打包模型代码
使用 PostCodeGenCommand
配置参数、packNGo
函数和模型的编译信息对象对模型代码文件进行打包。您可以设置打包操作以使用:
系统生成的编译信息对象。
如果是这种情况,则在生成模型代码之前,请使用
set_param
将配置参数PostCodeGenCommand
设置为显式调用packNGo
函数。例如:set_param(bdroot, 'PostCodeGenCommand', 'packNGo(buildInfo);');
在生成模型代码并写入磁盘后、但在生成联编文件前,此命令指示编译过程计算对
packNGo
的调用。此命令为当前选定的模型使用系统生成的编译信息对象。以编程方式构造的编译信息对象。
在这种情况下,可使用其他编译信息函数有选择地将路径和文件包含在您随后使用
packNGo
函数指定的编译信息对象中。例如:. . . myModelBuildInfo = RTW.BuildInfo; addSourceFiles(myModelBuildInfo, {'test1.c' 'test2.c' 'driver.c'}); . . . packNGo(myModelBuildInfo);
以下示例说明如何更改 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
来编译解包后的代码。
代码打包示例
此示例说明如何对为示例模型 rtwdemo_rtwintro
生成的代码文件进行打包:
将您的工作文件夹设置为可写文件夹。
打开模型
rtwdemo_rtwintro
并在您的工作文件夹中保存一份副本。在命令行窗口中,输入:
set_param('rtwdemo_rtwintro', 'PostCodeGenCommand',... 'packNGo(buildInfo, ''packType'' ''hierarchical'')');
为模型生成代码。
检查生成的 ZIP 文件
rtwdemo_rtwintro.zip
。ZIP 文件包含两个次级 ZIP 文件,即mlrFiles.zip
和sDirFiles.zip
。检查
mlrFiles.zip
和sDirFiles.zip
。将 ZIP 文件转移到您的目标文件夹并解包。
要编译解包的代码,请使用
codebuild
函数。
限制
packNGo 函数
有关适用于此函数的限制的信息,请参阅 packNGo
。
具有非默认扩展名的可执行文件
如果编译过程使用联编文件模板方式,则 packNGo
会使用链接器工具指定的可执行文件扩展名来确定需要打包的二进制工件。
如果生成具有非默认扩展名的可执行文件,请检查该扩展名是否保存在与联编文件模板关联的工具链中。有关详细信息,请参阅将模板联编文件与工具链相关联。
如果编译过程生成的可执行文件的扩展名不同于工具链中保存的扩展名,packNGo
不会打包该可执行文件。