CPack Archive Generator

CPack generator for packaging files into an archive, which can have any of the following formats:

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

  • TBZ2 (.tar.bz2)

  • TGZ (.tar.gz)

  • TXZ (.tar.xz)

  • TZ (.tar.Z)

  • TZST (.tar.zst)

  • ZIP (.zip)

New in version 3.1: 7Z and TXZ formats support.

New in version 3.16: TZST format support.

When this generator is called from CPackSourceConfig.cmake (or through the package_source target), then the generated archive will contain all files in the project directory, except those specified in CPACK_SOURCE_IGNORE_FILES. The following is one example of packaging all source files of a project:

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

When this generator is called from CPackConfig.cmake (or through the package target), then the generated archive will contain all files that have been installed via CMake's install() command (and the deprecated commands install_files(), install_programs(), and install_targets()).

Variables specific to CPack Archive generator

CPACK_ARCHIVE_FILE_NAME
CPACK_ARCHIVE_<component>_FILE_NAME

Package file name without extension. The extension is determined from the archive format (see list above) and automatically appended to the file name. The default is <CPACK_PACKAGE_FILE_NAME>[-<component>], with spaces replaced by '-'.

New in version 3.9: Per-component CPACK_ARCHIVE_<component>_FILE_NAME variables.

CPACK_ARCHIVE_COMPONENT_INSTALL

Enable component packaging. If enabled (ON), then the archive generator creates multiple packages. The default is OFF, which means that a single package containing files of all components is generated.

Variables used by CPack Archive generator

These variables are used by the Archive generator, but are also available to CPack generators which are essentially archives at their core. These include:

CPACK_ARCHIVE_THREADS

New in version 3.18.

The number of threads to use when performing the compression. If set to 0, the number of available cores on the machine will be used instead. The default is 1 which limits compression to a single thread. Note that not all compression modes support threading in all environments. Currently, only the XZ compression may support it.

See also the CPACK_THREADS variable.

New in version 3.21: Official CMake binaries available on cmake.org now ship with a liblzma that supports parallel compression. Older versions did not.