CPack productbuild 生成器¶
3.7 版本中新增。
productbuild CPack 生成器 (macOS)。
CPack productbuild 生成器特有的变量¶
以下变量是使用 ProductBuild 在 Mac macOS 上构建安装程序特有的
- CPACK_COMMAND_PRODUCTBUILD¶
用于生成 macOS 安装程序或 Mac App Store 的产品归档的
productbuild(1)命令的路径。此变量可用于覆盖自动检测到的命令 (或在自动检测失败时指定其位置)。
- CPACK_PRODUCTBUILD_IDENTIFIER¶
在版本 3.23 中添加。
设置要与产品关联的唯一 (非本地化) 产品标识符 (例如
com.kitware.cmake)。任何组件的产品名称都将追加到此值后面。
- CPACK_PRODUCTBUILD_IDENTITY_NAME¶
版本 3.8 新增。
为生成的包添加数字签名。
- CPACK_PRODUCTBUILD_KEYCHAIN_PATH¶
版本 3.8 新增。
指定一个特定的钥匙串来搜索签名身份。
- CPACK_COMMAND_PKGBUILD¶
用于在 macOS 上生成 macOS 组件包的
pkgbuild(1)命令的路径。此变量可用于覆盖自动检测到的命令 (或在自动检测失败时指定其位置)。
- CPACK_PKGBUILD_IDENTITY_NAME¶
版本 3.8 新增。
为生成的包添加数字签名。
- CPACK_PKGBUILD_KEYCHAIN_PATH¶
版本 3.8 新增。
指定一个特定的钥匙串来搜索签名身份。
- CPACK_PREFLIGHT_<COMP>_SCRIPT¶
将用作命名为
<COMP>的组件包的preinstall脚本的文件的完整路径,其中<COMP>是大写的组件名称。如果未为给定组件定义此变量,则不添加preinstall脚本。
- CPACK_POSTFLIGHT_<COMP>_SCRIPT¶
将用作命名为
<COMP>的组件包的postinstall脚本的文件的完整路径,其中<COMP>是大写的组件名称。如果未为给定组件定义此变量,则不添加postinstall脚本。
- CPACK_PRODUCTBUILD_RESOURCES_DIR¶
版本 3.9 中添加。
如果指定了此变量,productbuild 生成器会将此目录中的文件 (包括子目录) 复制到
Resources目录。这会在复制CPACK_RESOURCE_FILE_WELCOME、CPACK_RESOURCE_FILE_README和CPACK_RESOURCE_FILE_LICENSE文件之前完成。
- CPACK_PRODUCTBUILD_DOMAINS¶
在版本 3.23 中添加。
此选项允许更精细地控制产品可以安装的位置。当将其设置为 true 时 (请参阅策略
CMP0161),将以下形式的domains元素添加到 productbuild 分发 XML 中。<domains enable_anywhere="true" enable_currentUserHome="false" enable_localSystem="true"/>
默认值如上所示,但可以使用
CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE、CPACK_PRODUCTBUILD_DOMAINS_USER和CPACK_PRODUCTBUILD_DOMAINS_ROOT进行覆盖。
- CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE¶
在版本 3.23 中添加。
可用于覆盖分发 XML 的
domains元素中的enable_anywhere属性。当设置为 true 时,产品可以安装在任何卷的根目录下,包括非系统卷。CPACK_PRODUCTBUILD_DOMAINS必须设置为 true,此变量才会有任何效果。
- CPACK_PRODUCTBUILD_DOMAINS_USER¶
在版本 3.23 中添加。
可用于覆盖分发 XML 的
domains元素中的enable_currentUserHome属性。当设置为 true 时,产品可以安装到当前用户的家目录。请注意,安装到用户家目录时,将适用以下附加要求安装程序可能无法写入用户家目录之外的任何内容。
安装将以当前用户而不是
root的身份执行。这可能会对CPACK_PREFLIGHT_<COMP>_SCRIPT和CPACK_POSTFLIGHT_<COMP>_SCRIPT产生影响。执行安装不需要管理员权限。
CPACK_PRODUCTBUILD_DOMAINS必须设置为 true,此变量才会有任何效果。
- CPACK_PRODUCTBUILD_DOMAINS_ROOT¶
在版本 3.23 中添加。
可用于覆盖分发 XML 的
domains元素中的enable_localSystem属性。当设置为 true 时,产品可以安装在根目录下。除非产品只能安装到用户家目录,否则此项通常应设置为 true。CPACK_PRODUCTBUILD_DOMAINS必须设置为 true,此变量才会有任何效果。
背景图片¶
在 3.17 版本中添加。
这组变量控制了生成安装程序的背景图片。
- CPACK_PRODUCTBUILD_BACKGROUND¶
如果指定了此变量,则向 Distribution XML 添加背景。该值包含
Resources目录中图片的路径。
- CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT¶
向 Distribution XML 中的背景添加
alignment属性。有关有效值,请参阅 Apple 文档。
- CPACK_PRODUCTBUILD_BACKGROUND_SCALING¶
向 Distribution XML 中的背景添加
scaling属性。有关有效值,请参阅 Apple 文档。
- CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE¶
向 Distribution XML 中的背景添加
mime-type属性。该选项包含图片的 MIME 类型。
- CPACK_PRODUCTBUILD_BACKGROUND_UTI¶
向 Distribution XML 中的背景添加
uti属性。该选项包含图片的 UTI 类型。
- CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA¶
如果指定了此变量,则为 Distribution XML 添加暗色主题背景。该值包含
Resources目录中图片的路径。
- CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT¶
与
CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT选项相同,但适用于暗色主题。
- CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING¶
与
CPACK_PRODUCTBUILD_BACKGROUND_SCALING选项相同,但适用于暗色主题。
- CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE¶
与
CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE选项相同,但适用于暗色主题。
- CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI¶
与
CPACK_PRODUCTBUILD_BACKGROUND_UTI选项相同,但适用于暗色主题。
分发 XML 模板¶
CPack 使用模板文件来生成此包生成器内部使用的 distribution.dist 文件。通常,CMake 会提供模板文件,但项目可以通过在 CMAKE_MODULE_PATH 变量列出的目录之一中放置一个名为 CPack.distribution.dist.in 的文件来提供自己的模板。然后 CPack 将使用项目提供的模板文件,而不是使用自己的模板文件。
通过执行类似于 configure_file() 命令的替换来生成 distribution.dist 文件。CPack 运行时设置的任何变量都可以使用常规的 @...@ 形式进行替换。以下变量也由 CPack 内部设置并可用于替换:
CPACK_RESOURCE_FILE_LICENSE_NOPATH与
CPACK_RESOURCE_FILE_LICENSE相同,但省略了路径。该文件将在与生成的distribution.dist文件相同的目录中可用。CPACK_RESOURCE_FILE_README_NOPATH与
CPACK_RESOURCE_FILE_README相同,但省略了路径。该文件将在与生成的distribution.dist文件相同的目录中可用。CPACK_RESOURCE_FILE_WELCOME_NOPATH与
CPACK_RESOURCE_FILE_WELCOME相同,但省略了路径。该文件将在与生成的distribution.dist文件相同的目录中可用。CPACK_APPLE_PKG_INSTALLER_CONTENT在版本 3.23 中添加。
这包含所有指定安装程序范围内选项 (包括域详细信息)、默认背景和选择列表的 XML 元素。
CPACK_PACKAGEMAKER_CHOICES自 3.23 版本起已弃用。
这仅包含指定默认背景和选择列表的 XML 元素。它不包括安装程序范围的选项或任何域详细信息。请改用
CPACK_APPLE_PKG_INSTALLER_CONTENT。