CPack 归档生成器

CPack 生成器用于将文件打包到归档文件中,归档文件可以具有以下任何格式

  • 7Z - 7zip - (.7z)

    版本 3.1 中新增。

  • TAR (.tar)

    版本 4.0 中新增。

  • TBZ2 (.tar.bz2)

  • TGZ (.tar.gz)

  • TXZ (.tar.xz)

    版本 3.1 中新增。

  • TZ (.tar.Z)

  • TZST (.tar.zst)

    版本 3.16 中新增。

  • ZIP (.zip)

当从 CPackSourceConfig.cmake (或通过 package_source 目标) 调用此生成器时,生成的归档文件将包含项目目录中的所有文件,但 CPACK_SOURCE_IGNORE_FILES 中指定的文件除外。以下是将项目的所有源文件打包的一个示例

set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES
  \\.git/
  build/
  ".*~$"
)
set(CPACK_VERBATIM_VARIABLES YES)
include(CPack)

当从 CPackConfig.cmake (或通过 package 目标) 调用此生成器时,生成的归档文件将包含通过 CMake 的 install() 命令(以及已弃用的命令 install_files()install_programs()install_targets())安装的所有文件。

CPack 归档生成器特有的变量

CPACK_ARCHIVE_FILE_NAME

版本 3.9 中新增。

基于组件的软件包的归档名称,不带扩展名。

默认值:

CPACK_PACKAGE_FILE_NAME

扩展名会自动追加。

如果 CPACK_COMPONENTS_GROUPING 设置为 ALL_COMPONENTS_IN_ONE,这将是单个输出归档文件的名称。

在版本 4.0 中更改:此变量也适用于非组件软件包。

CPACK_ARCHIVE_<component>_FILE_NAME

版本 3.9 中新增。

组件归档名称,不带扩展名。

默认值:

<CPACK_ARCHIVE_FILE_NAME>-<component>,空格替换为 '-'

扩展名会自动追加。请注意,<component> 在变量名中全部为大写。

CPACK_ARCHIVE_FILE_EXTENSION

版本 3.25 中新增。

归档文件扩展名。

默认值:

默认值在上面的列表中给出。

CPACK_ARCHIVE_COMPONENT_INSTALL

启用组件打包。

默认值:

OFF

如果启用 (ON) ,则会生成多个软件包。默认情况下,会生成一个包含所有组件文件的软件包。

CPack 归档生成器使用的变量

这些变量由归档生成器使用,但也适用于本质上是归档文件的 CPack 生成器。这些包括

CPACK_ARCHIVE_THREADS

版本 3.18 中新增。

执行压缩时要使用的线程数。

默认值:

CPACK_THREADS 的值

如果设置为 0,则将使用机器上可用的核心数。请注意,并非所有压缩模式都在所有环境中都支持线程。

在版本 3.21 中新增:cmake.org 上提供的官方 CMake 二进制文件现在附带支持并行压缩的 liblzma。旧版本则没有。