cpack1
Cpack command-line reference
Usage
cpack [<options>]
Overview
The cpack executable is the CMake packaging program. It generates installers and source packages in a variety of formats.
For each installer or package format, cpack has a specific backend, called "generator". A generator is responsible for generating the required inputs and invoking the specific package creation tools. These installer or package generators are not to be confused with the makefile generators of the cmake <#manual:cmake(1)> command.
All supported generators are specified in the cpack-generators <#manual:cpack-generators(7)> manual. The command cpack --help prints a list of generators supported for the target platform. Which of them are to be used can be selected through the CPACK_GENERATOR <#variable:CPACK_GENERATOR> variable or through the command-line option -G.
The cpack program is steered by a configuration file written in the CMake language <#manual:cmake-language(7)>. Unless chosen differently through the command-line option --config, the file CPackConfig.cmake in the current directory is used.
In the standard CMake workflow, the file CPackConfig.cmake is generated by the cmake <#manual:cmake(1)> executable, provided the CPack <#module:CPack> module is included by the project's CMakeLists.txt file.
Options
-
-G <generators> -
<generators>is a semicolon-separated list <#cmake-language-lists> of generator names.cpackwill iterate through this list and produce package(s) in that generator's format according to the details provided in theCPackConfig.cmakeconfiguration file. If this option is not given, theCPACK_GENERATOR<#variable:CPACK_GENERATOR> variable determines the default set of generators that will be used.
-
-C <configurations> -
Specify the project configuration(s) to be packaged (e.g.
Debug,Release, etc.), where<configurations>is a semicolon-separated list <#cmake-language-lists>. When the CMake project uses a multi-configuration generator such asXcode<#generator:Xcode> or Visual Studio <#visual-studio-generators>, this option is needed to tellcpackwhich built executables to include in the package. The user is responsible for ensuring that the configuration(s) listed have already been built before invokingcpack.
-
-D <var>=<value> -
Set a CPack variable. This will override any value set for
<var>in the input file read bycpack.Added in version 4.0: The single-argument form
-D<var>=<value>is now supported.
-
--config <configFile> -
Specify the configuration file read by
cpackto provide the packaging details. By default,CPackConfig.cmakein the current directory will be used.
-
-V, --verbose -
Run
cpackwith verbose output. This can be used to show more details from the package generation tools and is suitable for project developers.
-
--debug -
Run
cpackwith debug output. This option is intended mainly for the developers ofcpackitself and is not normally needed by project developers.
-
--trace -
Put the underlying cmake scripts in trace mode.
-
--trace-expand -
Put the underlying cmake scripts in expanded trace mode.
-
-P <packageName> -
Override/define the value of the
CPACK_PACKAGE_NAME<#variable:CPACK_PACKAGE_NAME> variable used for packaging. Any value set for this variable in theCPackConfig.cmakefile will then be ignored.
-
-R <packageVersion> -
Override/define the value of the
CPACK_PACKAGE_VERSION<#variable:CPACK_PACKAGE_VERSION> variable used for packaging. It will override a value set in theCPackConfig.cmakefile or one automatically computed fromCPACK_PACKAGE_VERSION_MAJOR<#variable:CPACK_PACKAGE_VERSION_MAJOR>,CPACK_PACKAGE_VERSION_MINOR<#variable:CPACK_PACKAGE_VERSION_MINOR> andCPACK_PACKAGE_VERSION_PATCH<#variable:CPACK_PACKAGE_VERSION_PATCH>.
-
-B <packageDirectory> -
Override/define
CPACK_PACKAGE_DIRECTORY<#variable:CPACK_PACKAGE_DIRECTORY>, which controls the directory where CPack will perform its packaging work. The resultant package(s) will be created at this location by default and a_CPack_Packagessubdirectory will also be created below this directory to use as a working area during package creation.
-
--vendor <vendorName> -
Override/define
CPACK_PACKAGE_VENDOR<#variable:CPACK_PACKAGE_VENDOR>.
-
--preset <preset>, --preset=<preset> -
Use a package
preset<#manual:cmake-presets(7)> to specify package options. The project binary directory is inferred from theconfigurePreset<#cmakepresets-packagepresets-configurepreset> key.Changed in version 4.4: If
--presets-fileis specified, neither ofCMakePresets.jsonnorCMakeUserPresets.jsonare required to be present. Otherwise, they are required to be present in the top level source directory. In prior versions, this was strictly required.
-
--presets-file <file>, --presets-file=<file> -
Added in version 4.4.
Reads
presets<#manual:cmake-presets(7)> from the given<file>. The specified path may be absolute or relative to the current working directory. If--presets-fileis given, presets defined inCMakePresets.jsonandCMakeUserPresets.jsonwill be ignored.
-
--list-presets -
Lists the available package presets.
Changed in version 4.4: If
--presets-fileis specified, neither ofCMakePresets.jsonnorCMakeUserPresets.jsonare required to be present, and only presets defined in the given<file>will be listed. Otherwise, they are required to be present in the top level source directory. In prior versions, this was strictly required.
- -version[=json-v1] [<file>], --version[=json-v1] [<file>], /V[=json-v1] [<file>], /version[=json-v1] [<file>]
-
Show program name/version banner and exit. If
json-v1is specified, print extended version information in JSON format. The JSON output contains the versions for the CMake and its dependencies. The output is printed to a named<file>if given.The JSON output format is described in machine-readable form by this JSON schema.
- -h, -H, --help, -help, -usage, /?
-
Print usage information and exit.
Usage describes the basic command line interface and its options.
- --help <keyword> [<file>]
-
Print help for one CMake keyword.
<keyword>can be a property, variable, command, policy, generator or module.The relevant manual entry for
<keyword>is printed in a human-readable text format. The output is printed to a named<file>if given.Changed in version 3.28: Prior to CMake 3.28, this option supported command names only.
-
--help-full [<file>] -
Print all help manuals and exit.
All manuals are printed in a human-readable text format. The output is printed to a named
<file>if given.
- --help-manual <man> [<file>]
-
Print one help manual and exit.
The specified manual is printed in a human-readable text format. The output is printed to a named
<file>if given.
-
--help-manual-list [<file>] -
List help manuals available and exit.
The list contains all manuals for which help may be obtained by using the
--help-manualoption followed by a manual name. The output is printed to a named<file>if given.
- --help-command <cmd> [<file>]
-
Print help for one command and exit.
The
cmake-commands(7)<#manual:cmake-commands(7)> manual entry for<cmd>is printed in a human-readable text format. The output is printed to a named<file>if given.
-
--help-command-list [<file>] -
List commands with help available and exit.
The list contains all commands for which help may be obtained by using the
--help-commandoption followed by a command name. The output is printed to a named<file>if given.
-
--help-commands [<file>] -
Print cmake-commands manual and exit.
The
cmake-commands(7)<#manual:cmake-commands(7)> manual is printed in a human-readable text format. The output is printed to a named<file>if given.
- --help-module <mod> [<file>]
-
Print help for one module and exit.
The
cmake-modules(7)<#manual:cmake-modules(7)> manual entry for<mod>is printed in a human-readable text format. The output is printed to a named<file>if given.
-
--help-module-list [<file>] -
List modules with help available and exit.
The list contains all modules for which help may be obtained by using the
--help-moduleoption followed by a module name. The output is printed to a named<file>if given.
-
--help-modules [<file>] -
Print cmake-modules manual and exit.
The
cmake-modules(7)<#manual:cmake-modules(7)> manual is printed in a human-readable text format. The output is printed to a named<file>if given.
- --help-policy <cmp> [<file>]
-
Print help for one policy and exit.
The
cmake-policies(7)<#manual:cmake-policies(7)> manual entry for<cmp>is printed in a human-readable text format. The output is printed to a named<file>if given.
-
--help-policy-list [<file>] -
List policies with help available and exit.
The list contains all policies for which help may be obtained by using the
--help-policyoption followed by a policy name. The output is printed to a named<file>if given.
-
--help-policies [<file>] -
Print cmake-policies manual and exit.
The
cmake-policies(7)<#manual:cmake-policies(7)> manual is printed in a human-readable text format. The output is printed to a named<file>if given.
- --help-property <prop> [<file>]
-
Print help for one property and exit.
The
cmake-properties(7)<#manual:cmake-properties(7)> manual entries for<prop>are printed in a human-readable text format. The output is printed to a named<file>if given.
-
--help-property-list [<file>] -
List properties with help available and exit.
The list contains all properties for which help may be obtained by using the
--help-propertyoption followed by a property name. The output is printed to a named<file>if given.
-
--help-properties [<file>] -
Print cmake-properties manual and exit.
The
cmake-properties(7)<#manual:cmake-properties(7)> manual is printed in a human-readable text format. The output is printed to a named<file>if given.
- --help-variable <var> [<file>]
-
Print help for one variable and exit.
The
cmake-variables(7)<#manual:cmake-variables(7)> manual entry for<var>is printed in a human-readable text format. The output is printed to a named<file>if given.
-
--help-variable-list [<file>] -
List variables with help available and exit.
The list contains all variables for which help may be obtained by using the
--help-variableoption followed by a variable name. The output is printed to a named<file>if given.
-
--help-variables [<file>] -
Print cmake-variables manual and exit.
The
cmake-variables(7)<#manual:cmake-variables(7)> manual is printed in a human-readable text format. The output is printed to a named<file>if given.
Releases
11 releases since Debian 4.0 (Etch); the text changed 10 times.
--config since Debian 10 (Buster);
--debug since Debian 7 (Wheezy);
--help-command-list since Debian 7 (Wheezy);
--help-commands since Debian 7 (Wheezy);
--help-full since Debian 7 (Wheezy);
--help-manual-list since Debian 8 (Jessie);
--help-module-list since Debian 8 (Jessie);
--help-modules since Debian 8 (Jessie);
--help-policies since Debian 8 (Jessie);
--help-policy-list since Debian 8 (Jessie);
--help-properties since Debian 8 (Jessie);
--help-property-list since Debian 8 (Jessie);
--help-variable-list since Debian 7 (Wheezy);
--help-variables since Debian 7 (Wheezy);
--list-presets since Debian 12 (Bookworm);
--preset since Debian 12 (Bookworm);
--presets-file since Arch Linux 2026-11-01;
--trace since Debian 10 (Buster);
--trace-expand since Debian 10 (Buster);
--vendor since Debian 10 (Buster);
--verbose since Debian 7 (Wheezy);
-B since Debian 10 (Buster);
-P since Debian 10 (Buster);
-R since Debian 10 (Buster);
-V since Debian 7 (Wheezy).
--copyright until Debian 7 (Wheezy);
--help until Debian 4.0 (Etch);
--help-html until Debian 7 (Wheezy);
--help-man until Debian 7 (Wheezy);
--version until Debian 4.0 (Etch).