Main Content

packNGo

将生成的代码打包为 zip 文件以进行转移

说明

示例

packNGo(buildInfo,Name,Value) 将代码文件打包为一个压缩 zip 文件,以便您可以将其转移到另一个开发环境中并解包和重新编译它们。名称-值对组列表是可选的。

ZIP 文件可以包含以下类型的文件:

  • 源文件(例如,.c.cu.cpp 文件)

  • 头文件(例如,.h.cuh.hpp 文件)

  • 包含编译信息对象的 MAT 文件(.mat 文件)

  • 最终可执行文件所需的非编译相关文件(例如,.dll 文件和 .txt 信息文件)

  • 编译生成的二进制文件(例如,可执行的 .exe 文件或动态链接库 .dll)。

    代码生成器在 zip 文件中包含编译生成的二进制文件(如果存在)。ignoreFileMissing 属性不适用于编译生成的二进制文件。

  • CMake 配置文件 (CMakeLists.txt),您可以用它来生成用于编译器环境的联编文件或工程。

使用此函数来转移文件,您之后可以针对特定的目标环境重新编译文件,或者在未安装 MATLAB® 的开发环境中重新编译文件。默认情况下,该函数将这些文件以扁平文件夹结构打包为代码生成文件夹中的一个 zip 文件。您可以通过指定名称-值对组来自定义输出。转移 zip 文件后,使用标准 zip 实用工具解包压缩文件。

packNGo 函数可能会修改传递到第一个 packNGo 参量的编译信息。在对代码打包的过程中,packNGo 可以根据编译信息中记录的源和包含路径查找其他文件。找到这些文件后,packNGo 会将它们添加到编译信息中。

要确保 packNGo 能找到头文件,请使用 addIncludePaths 函数将头文件的路径添加到 buildInfo

注意

当使用 codegen 命令生成独立代码时,您可以使用 -package 选项一步生成代码并将代码打包到 ZIP 文件中。

示例

全部折叠

在编译过程完成后,您可以从命令行窗口运行 packNGo。使用 packNGo 对生成代码进行 zip 文件打包,生成 portzingbit.zip 文件。请维护相对文件层次结构。

  1. 将文件夹更改为代码生成文件夹。例如,对于 MATLAB Coder™,使用 codegen/dll/zingbit;对于 Simulink® 代码生成,使用 zingbit_grt_rtw

  2. 加载说明该编译的 buildInfo 对象。

  3. 使用 packTypefileName 的属性设置运行 packNGo

cd codegen/dll/zingbit;
load buildInfo.mat
packNGo(buildInfo,'packType', 'hierarchical', ...
   'fileName','portzingbit');

如果从代码生成窗格中配置 zip 文件打包,代码生成器将在编译过程中使用 packNGo 输出一个 zip 文件。

  1. 选择代码生成 > 代码和工件打包。或者,提供一个 Zip 文件名。要应用更改,请点击确定

  2. 编译模型。在编译过程结束时,代码生成器输出 zip 文件。zip 文件中的文件夹结构是分层结构。

您可以使用 set_param 函数配置 ZIP 文件打包。在编译过程中,代码生成器使用 packNGo 来创建 ZIP 文件。

要为模型 zingbit 配置 ZIP 文件打包,请运行以下命令:

set_param('zingbit', 'PackageGeneratedCodeAndArtifacts', 'on');

zingbit.zip 函数创建文件 packNGo

要为 ZIP 文件指定另一个名称,例如 portzingbit.zip,请运行以下命令:

set_param('zingbit', 'PackageGeneratedCodeAndArtifacts', 'on');
set_param('zingbit', 'PackageName', 'portzingbit.zip')

输入参数

全部折叠

在编译过程中,代码生成器将 buildInfo.mat 放在代码生成文件夹中。此 MAT 文件包含 buildInfo 对象。该对象提供 packNGo 用于生成 zip 文件的信息。

您可以将参量指定为一个 buildInfo 对象:

load buildInfo.mat
packNGo(buildInfo,'packType', 'hierarchical', ...
   'fileName','portzingbit');

您也可以将参量指定为 buildInfo.mat 文件的路径:

buildInfoFile = fullfile(pathToBuildFolder, 'buildInfo.mat');
packNGo(buildInfoFile,'packType', 'hierarchical', ...
   'fileName','portzingbit');

您也可以将参量指定为包含 buildInfo.mat 的文件夹的路径:

packNGo(pathToBuildFolder,'packType', 'hierarchical', ...
   'fileName','portzingbit');

名称-值参数

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

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

示例: 'packType','flat','nestedZipFiles',true

如果为 'flat',则将生成的代码文件以单一扁平文件夹结构打包为一个 zip 文件。函数打包以下文件:

  • buildInfo.mat 子文件。

  • CMakeLists.txt 文件。

如果为 'hierarchical',则将生成的代码文件以分层结构打包为一个主 zip 文件。层次结构包含顶层模型、引用模型和共享实用工具文件夹。函数还打包以下文件:

  • 文件夹对应的 buildInfo.mat 文件。

  • 编译文件夹中的 CMakeLists.txt 文件。

示例: 'packType','flat'

如果为 true,则创建包含三个次级 zip 文件的主 zip 文件:

  • mlrFiles.zip - 您的 matlabroot 文件夹树中的文件

  • sDirFiles.zip - 代码生成文件夹中及其下的文件

  • otherFiles.zip - 不在 matlabrootstart 文件夹树中的必需文件

如果为 false,则创建包含文件夹(例如,您的代码生成文件夹和 matlabroot)的主 zip 文件。

示例: 'nestedZipFiles',true

如果未指定 'fileName'-值对组,该函数会将文件打包到名为 modelOrFunctionName.zip 的 zip 文件中,并将该 zip 文件放在代码生成文件夹中。

如果您使用值 'myName' 指定 'fileName',该函数将在代码生成文件夹中创建 myName.zip

要为主 zip 文件指定另一个位置,请提供该位置的绝对路径,fullPath/myName.zip

示例: 'fileName','/home/user/myModel.zip'

如果为 true,则在 zip 文件中只包含编译代码所需的最少头文件。

如果为 false,则在 zip 文件中包含在包含路径上找到的头文件。

示例: 'minimalHeaders',true

如果为 false,则不在 zip 文件中包含 html 文件夹。

如果为 true,则在 zip 文件中包含 html 文件夹。

示例: 'includeReport',false

如果为 false,则在遇到解析错误时终止。

如果为 true,则在遇到解析错误时不终止。

示例: 'ignoreParseError',false

如果为 false,则在遇到文件缺失错误时终止。

如果为 true,则在遇到文件缺失错误时不终止。

示例: 'ignoreFileMissing',false

限制

  • 该函数只能针对源文件运行,例如 *.c*.cppcuh*.h 文件。该函数不支持编译标志、定义或联编文件。

  • 该函数不能将源文件打包用于可重用的库子系统。

  • 可能会包含不必要的文件。该函数可能会根据编译信息中记录的源路径和包含路径查找其他文件,即使这些文件未使用。

版本历史记录

在 R2006b 中推出