# 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)

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 ‘-‘.

`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 Cygwin Generator`

> - `CPack FreeBSD Generator`

`CPACK_ARCHIVE_THREADS`

  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.

Note

Official CMake binaries available on `cmake.org` ship with a `liblzma` that does not support parallel compression.