diff options
author | biao716.wang <biao716.wang@samsung.com> | 2020-03-19 01:04:30 +0900 |
---|---|---|
committer | biao716.wang <biao716.wang@samsung.com> | 2020-03-19 01:04:30 +0900 |
commit | 1d6613f4446f69f63beddf2d97c201154fb35e33 (patch) | |
tree | f32eae75900a0df14ab8fa1e2bd436af159ef91d /Modules/CPack.cmake | |
parent | aabcd8e66e3268a232efe2e416635d5b6bf84ad5 (diff) | |
download | cmake-upstream/3.16.4.tar.gz cmake-upstream/3.16.4.tar.bz2 cmake-upstream/3.16.4.zip |
Imported Upstream version 3.16.4upstream/3.16.4
Change-Id: Ic5262ea6c0872b353ea2dc35fe1e944063ae8409
Signed-off-by: biao716.wang <biao716.wang@samsung.com>
Diffstat (limited to 'Modules/CPack.cmake')
-rw-r--r-- | Modules/CPack.cmake | 733 |
1 files changed, 419 insertions, 314 deletions
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index a63fc8325..c2ed3de5f 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -1,298 +1,371 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPack -# ----- -# -# Build binary and source package installers. -# -# Variables common to all CPack generators -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The -# CPack module generates binary and source installers in a variety of -# formats using the cpack program. Inclusion of the CPack module adds -# two new targets to the resulting makefiles, package and -# package_source, which build the binary and source installers, -# respectively. The generated binary installers contain everything -# installed via CMake's INSTALL command (and the deprecated -# INSTALL_FILES, INSTALL_PROGRAMS, and INSTALL_TARGETS commands). -# -# For certain kinds of binary installers (including the graphical -# installers on Mac OS X and Windows), CPack generates installers that -# allow users to select individual application components to install. -# See CPackComponent module for that. -# -# The CPACK_GENERATOR variable has different meanings in different -# contexts. In your CMakeLists.txt file, CPACK_GENERATOR is a *list of -# generators*: when run with no other arguments, CPack will iterate over -# that list and produce one package for each generator. In a -# CPACK_PROJECT_CONFIG_FILE, though, CPACK_GENERATOR is a *string naming -# a single generator*. If you need per-cpack- generator logic to -# control *other* cpack settings, then you need a -# CPACK_PROJECT_CONFIG_FILE. -# -# The CMake source tree itself contains a CPACK_PROJECT_CONFIG_FILE. -# See the top level file CMakeCPackOptions.cmake.in for an example. -# -# If set, the CPACK_PROJECT_CONFIG_FILE is included automatically on a -# per-generator basis. It only need contain overrides. -# -# Here's how it works: -# -# * cpack runs -# * it includes CPackConfig.cmake -# * it iterates over the generators listed in that file's -# CPACK_GENERATOR list variable (unless told to use just a -# specific one via -G on the command line...) -# * foreach generator, it then -# -# - sets CPACK_GENERATOR to the one currently being iterated -# - includes the CPACK_PROJECT_CONFIG_FILE -# - produces the package for that generator -# -# This is the key: For each generator listed in CPACK_GENERATOR in -# CPackConfig.cmake, cpack will *reset* CPACK_GENERATOR internally to -# *the one currently being used* and then include the -# CPACK_PROJECT_CONFIG_FILE. -# -# Before including this CPack module in your CMakeLists.txt file, there -# are a variety of variables that can be set to customize the resulting -# installers. The most commonly-used variables are: -# -# .. variable:: CPACK_PACKAGE_NAME -# -# The name of the package (or application). If not specified, defaults to -# the project name. -# -# .. variable:: CPACK_PACKAGE_VENDOR -# -# The name of the package vendor. (e.g., "Kitware"). -# -# .. variable:: CPACK_PACKAGE_DIRECTORY -# -# The directory in which CPack is doing its packaging. If it is not set -# then this will default (internally) to the build dir. This variable may -# be defined in CPack config file or from the cpack command line option -# "-B". If set the command line option override the value found in the -# config file. -# -# .. variable:: CPACK_PACKAGE_VERSION_MAJOR -# -# Package major Version -# -# .. variable:: CPACK_PACKAGE_VERSION_MINOR -# -# Package minor Version -# -# .. variable:: CPACK_PACKAGE_VERSION_PATCH -# -# Package patch Version -# -# .. variable:: CPACK_PACKAGE_DESCRIPTION_FILE -# -# A text file used to describe the project. Used, for example, the -# introduction screen of a CPack-generated Windows installer to describe -# the project. -# -# .. variable:: CPACK_PACKAGE_DESCRIPTION_SUMMARY -# -# Short description of the project (only a few words). Default value is:: -# -# ${PROJECT_DESCRIPTION} -# -# if DESCRIPTION has given to the project() call or -# CMake generated string with PROJECT_NAME otherwise. -# -# .. variable:: CPACK_PACKAGE_FILE_NAME -# -# The name of the package file to generate, not including the -# extension. For example, cmake-2.6.1-Linux-i686. The default value is:: -# -# ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}. -# -# .. variable:: CPACK_PACKAGE_INSTALL_DIRECTORY -# -# Installation directory on the target system. This may be used by some -# CPack generators like NSIS to create an installation directory e.g., -# "CMake 2.5" below the installation prefix. All installed element will be -# put inside this directory. -# -# .. variable:: CPACK_PACKAGE_ICON -# -# A branding image that will be displayed inside the installer (used by GUI -# installers). -# -# .. variable:: CPACK_PACKAGE_CHECKSUM -# -# An algorithm that will be used to generate additional file with checksum -# of the package. Output file name will be:: -# -# ${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM} -# -# Supported algorithms are those listed by the -# :ref:`string(\<HASH\>) <Supported Hash Algorithms>` -# command. -# -# .. variable:: CPACK_PROJECT_CONFIG_FILE -# -# CPack-time project CPack configuration file. This file included at cpack -# time, once per generator after CPack has set CPACK_GENERATOR to the -# actual generator being used. It allows per-generator setting of CPACK_* -# variables at cpack time. -# -# .. variable:: CPACK_RESOURCE_FILE_LICENSE -# -# License to be embedded in the installer. It will typically be displayed -# to the user by the produced installer (often with an explicit "Accept" -# button, for graphical installers) prior to installation. This license -# file is NOT added to installed file but is used by some CPack generators -# like NSIS. If you want to install a license file (may be the same as this -# one) along with your project you must add an appropriate CMake INSTALL -# command in your CMakeLists.txt. -# -# .. variable:: CPACK_RESOURCE_FILE_README -# -# ReadMe file to be embedded in the installer. It typically describes in -# some detail the purpose of the project during the installation. Not all -# CPack generators uses this file. -# -# .. variable:: CPACK_RESOURCE_FILE_WELCOME -# -# Welcome file to be embedded in the installer. It welcomes users to this -# installer. Typically used in the graphical installers on Windows and Mac -# OS X. -# -# .. variable:: CPACK_MONOLITHIC_INSTALL -# -# Disables the component-based installation mechanism. When set the -# component specification is ignored and all installed items are put in a -# single "MONOLITHIC" package. Some CPack generators do monolithic -# packaging by default and may be asked to do component packaging by -# setting CPACK_<GENNAME>_COMPONENT_INSTALL to 1/TRUE. -# -# .. variable:: CPACK_GENERATOR -# -# List of CPack generators to use. If not specified, CPack will create a -# set of options CPACK_BINARY_<GENNAME> (e.g., CPACK_BINARY_NSIS) allowing -# the user to enable/disable individual generators. This variable may be -# used on the command line as well as in:: -# -# cpack -D CPACK_GENERATOR="ZIP;TGZ" /path/to/build/tree -# -# .. variable:: CPACK_OUTPUT_CONFIG_FILE -# -# The name of the CPack binary configuration file. This file is the CPack -# configuration generated by the CPack module for binary -# installers. Defaults to CPackConfig.cmake. -# -# .. variable:: CPACK_PACKAGE_EXECUTABLES -# -# Lists each of the executables and associated text label to be used to -# create Start Menu shortcuts. For example, setting this to the list -# ccmake;CMake will create a shortcut named "CMake" that will execute the -# installed executable ccmake. Not all CPack generators use it (at least -# NSIS, WIX and OSXX11 do). -# -# .. variable:: CPACK_STRIP_FILES -# -# List of files to be stripped. Starting with CMake 2.6.0 CPACK_STRIP_FILES -# will be a boolean variable which enables stripping of all files (a list -# of files evaluates to TRUE in CMake, so this change is compatible). -# -# .. variable:: CPACK_VERBATIM_VARIABLES -# -# If set to TRUE, values of variables prefixed with CPACK_ will be escaped -# before being written to the configuration files, so that the cpack program -# receives them exactly as they were specified. If not, characters like quotes -# and backslashes can cause parsing errors or alter the value received by the -# cpack program. Defaults to FALSE for backwards compatibility. -# -# * Mandatory : NO -# * Default : FALSE -# -# The following CPack variables are specific to source packages, and -# will not affect binary packages: -# -# .. variable:: CPACK_SOURCE_PACKAGE_FILE_NAME -# -# The name of the source package. For example cmake-2.6.1. -# -# .. variable:: CPACK_SOURCE_STRIP_FILES -# -# List of files in the source tree that will be stripped. Starting with -# CMake 2.6.0 CPACK_SOURCE_STRIP_FILES will be a boolean variable which -# enables stripping of all files (a list of files evaluates to TRUE in -# CMake, so this change is compatible). -# -# .. variable:: CPACK_SOURCE_GENERATOR -# -# List of generators used for the source packages. As with CPACK_GENERATOR, -# if this is not specified then CPack will create a set of options (e.g., -# CPACK_SOURCE_ZIP) allowing users to select which packages will be -# generated. -# -# .. variable:: CPACK_SOURCE_OUTPUT_CONFIG_FILE -# -# The name of the CPack source configuration file. This file is the CPack -# configuration generated by the CPack module for source -# installers. Defaults to CPackSourceConfig.cmake. -# -# .. variable:: CPACK_SOURCE_IGNORE_FILES -# -# Pattern of files in the source tree that won't be packaged when building -# a source package. This is a list of regular expression patterns (that -# must be properly escaped), e.g., -# /CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.* -# -# The following variables are for advanced uses of CPack: -# -# .. variable:: CPACK_CMAKE_GENERATOR -# -# What CMake generator should be used if the project is CMake -# project. Defaults to the value of CMAKE_GENERATOR few users will want to -# change this setting. -# -# .. variable:: CPACK_INSTALL_CMAKE_PROJECTS -# -# List of four values that specify what project to install. The four values -# are: Build directory, Project Name, Project Component, Directory. If -# omitted, CPack will build an installer that installs everything. -# -# .. variable:: CPACK_SYSTEM_NAME -# -# System name, defaults to the value of ${CMAKE_SYSTEM_NAME}. -# -# .. variable:: CPACK_PACKAGE_VERSION -# -# Package full version, used internally. By default, this is built from -# CPACK_PACKAGE_VERSION_MAJOR, CPACK_PACKAGE_VERSION_MINOR, and -# CPACK_PACKAGE_VERSION_PATCH. -# -# .. variable:: CPACK_TOPLEVEL_TAG -# -# Directory for the installed files. -# -# .. variable:: CPACK_INSTALL_COMMANDS -# -# Extra commands to install components. -# -# .. variable:: CPACK_INSTALLED_DIRECTORIES -# -# Extra directories to install. -# -# .. variable:: CPACK_PACKAGE_INSTALL_REGISTRY_KEY -# -# Registry key used when installing this project. This is only used by -# installer for Windows. The default value is based on the installation -# directory. -# -# .. variable:: CPACK_CREATE_DESKTOP_LINKS -# -# List of desktop links to create. -# Each desktop link requires a corresponding start menu shortcut -# as created by :variable:`CPACK_PACKAGE_EXECUTABLES`. +#[=======================================================================[.rst: +CPack +----- + +Build binary and source package installers. + +Introduction +^^^^^^^^^^^^ + +The CPack module generates a file ``CPackConfig.cmake`` intended for +use in a subsequent run of the :manual:`cpack <cpack(1)>` program +where it steers the generation of installers or/and source packages. + +Inclusion of the CPack module adds two new build targets, ``package`` +and ``package_source``, which build the binary and source installers +respectively. The generated binary installers contain everything +installed via CMake's :command:`install` command (and the deprecated +commands :command:`install_files`, :command:`install_programs`, and +:command:`install_targets`). + +For certain kinds of binary installers (including the graphical +installers on macOS and Windows), CPack generates installers that +allow users to select individual application components to install. +See :module:`CPackComponent` module for further details. + +CPack Generators +^^^^^^^^^^^^^^^^ + +The :variable:`CPACK_GENERATOR` variable has different meanings in different +contexts. In a ``CMakeLists.txt`` file, :variable:`CPACK_GENERATOR` is a +*list of generators*: and when :manual:`cpack <cpack(1)>` is run with no other +arguments, it will iterate over that list and produce one package for each +generator. In a :variable:`CPACK_PROJECT_CONFIG_FILE`, +:variable:`CPACK_GENERATOR` is a *string naming a single generator*. If you +need per-cpack-generator logic to control *other* cpack settings, then you +need a :variable:`CPACK_PROJECT_CONFIG_FILE`. + +The CMake source tree itself contains a :variable:`CPACK_PROJECT_CONFIG_FILE`. +See the top level file ``CMakeCPackOptions.cmake.in`` for an example. + +If set, the :variable:`CPACK_PROJECT_CONFIG_FILE` is included automatically +on a per-generator basis. It only need contain overrides. + +Here's how it works: + +* :manual:`cpack <cpack(1)>` runs +* it includes ``CPackConfig.cmake`` +* it iterates over the generators given by the ``-G`` command line option, + or if no such option was specified, over the list of generators given by + the :variable:`CPACK_GENERATOR` variable set in the ``CPackConfig.cmake`` + input file. +* foreach generator, it then + + - sets :variable:`CPACK_GENERATOR` to the one currently being iterated + - includes the :variable:`CPACK_PROJECT_CONFIG_FILE` + - produces the package for that generator + +This is the key: For each generator listed in :variable:`CPACK_GENERATOR` in +``CPackConfig.cmake``, cpack will *reset* :variable:`CPACK_GENERATOR` +internally to *the one currently being used* and then include the +:variable:`CPACK_PROJECT_CONFIG_FILE`. + +Variables common to all CPack Generators +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Before including this CPack module in your ``CMakeLists.txt`` file, there +are a variety of variables that can be set to customize the resulting +installers. The most commonly-used variables are: + +.. variable:: CPACK_PACKAGE_NAME + + The name of the package (or application). If not specified, it defaults to + the project name. + +.. variable:: CPACK_PACKAGE_VENDOR + + The name of the package vendor. (e.g., "Kitware"). The default is "Humanity". + +.. variable:: CPACK_PACKAGE_DIRECTORY + + The directory in which CPack is doing its packaging. If it is not set + then this will default (internally) to the build dir. This variable may + be defined in a CPack config file or from the :manual:`cpack <cpack(1)>` + command line option ``-B``. If set, the command line option overrides the + value found in the config file. + +.. variable:: CPACK_PACKAGE_VERSION_MAJOR + + Package major version. This variable will always be set, but its default + value depends on whether or not version details were given to the + :command:`project` command in the top level CMakeLists.txt file. If version + details were given, the default value will be + :variable:`CMAKE_PROJECT_VERSION_MAJOR`. If no version details were given, + a default version of 0.1.1 will be assumed, leading to + ``CPACK_PACKAGE_VERSION_MAJOR`` having a default value of 0. + +.. variable:: CPACK_PACKAGE_VERSION_MINOR + + Package minor version. The default value is determined based on whether or + not version details were given to the :command:`project` command in the top + level CMakeLists.txt file. If version details were given, the default + value will be :variable:`CMAKE_PROJECT_VERSION_MINOR`, but if no minor + version component was specified then ``CPACK_PACKAGE_VERSION_MINOR`` will be + left unset. If no project version was given at all, a default version of + 0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_MINOR`` having a + default value of 1. + +.. variable:: CPACK_PACKAGE_VERSION_PATCH + + Package patch version. The default value is determined based on whether or + not version details were given to the :command:`project` command in the top + level CMakeLists.txt file. If version details were given, the default + value will be :variable:`CMAKE_PROJECT_VERSION_PATCH`, but if no patch + version component was specified then ``CPACK_PACKAGE_VERSION_PATCH`` will be + left unset. If no project version was given at all, a default version of + 0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_PATCH`` having a + default value of 1. + +.. variable:: CPACK_PACKAGE_DESCRIPTION + + A description of the project, used in places such as the introduction + screen of CPack-generated Windows installers. If not set, the value of + this variable is populated from the file named by + :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`. + +.. variable:: CPACK_PACKAGE_DESCRIPTION_FILE + + A text file used to describe the project when + :variable:`CPACK_PACKAGE_DESCRIPTION` is not explicitly set. The default + value for ``CPACK_PACKAGE_DESCRIPTION_FILE`` points to a built-in template + file ``Templates/CPack.GenericDescription.txt``. + +.. variable:: CPACK_PACKAGE_DESCRIPTION_SUMMARY + + Short description of the project (only a few words). If the + :variable:`CMAKE_PROJECT_DESCRIPTION` variable is set, it is used as the + default value, otherwise the default will be a string generated by CMake + based on :variable:`CMAKE_PROJECT_NAME`. + +.. variable:: CPACK_PACKAGE_HOMEPAGE_URL + + Project homepage URL. The default value is taken from the + :variable:`CMAKE_PROJECT_HOMEPAGE_URL` variable, which is set by the top + level :command:`project` command, or else the default will be empty if no + URL was provided to :command:`project`. + +.. variable:: CPACK_PACKAGE_FILE_NAME + + The name of the package file to generate, not including the + extension. For example, ``cmake-2.6.1-Linux-i686``. The default value + is:: + + ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME} + +.. variable:: CPACK_PACKAGE_INSTALL_DIRECTORY + + Installation directory on the target system. This may be used by some + CPack generators like NSIS to create an installation directory e.g., + "CMake 2.5" below the installation prefix. All installed elements will be + put inside this directory. + +.. variable:: CPACK_PACKAGE_ICON + + A branding image that will be displayed inside the installer (used by GUI + installers). + +.. variable:: CPACK_PACKAGE_CHECKSUM + + An algorithm that will be used to generate an additional file with the + checksum of the package. The output file name will be:: + + ${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM} + + Supported algorithms are those listed by the + :ref:`string(\<HASH\>) <Supported Hash Algorithms>` command. + +.. variable:: CPACK_PROJECT_CONFIG_FILE + + CPack-time project CPack configuration file. This file is included at cpack + time, once per generator after CPack has set :variable:`CPACK_GENERATOR` + to the actual generator being used. It allows per-generator setting of + ``CPACK_*`` variables at cpack time. + +.. variable:: CPACK_RESOURCE_FILE_LICENSE + + License to be embedded in the installer. It will typically be displayed + to the user by the produced installer (often with an explicit "Accept" + button, for graphical installers) prior to installation. This license + file is NOT added to the installed files but is used by some CPack generators + like NSIS. If you want to install a license file (may be the same as this + one) along with your project, you must add an appropriate CMake + :command:`install` command in your ``CMakeLists.txt``. + +.. variable:: CPACK_RESOURCE_FILE_README + + ReadMe file to be embedded in the installer. It typically describes in + some detail the purpose of the project during the installation. Not all + CPack generators use this file. + +.. variable:: CPACK_RESOURCE_FILE_WELCOME + + Welcome file to be embedded in the installer. It welcomes users to this + installer. Typically used in the graphical installers on Windows and Mac + OS X. + +.. variable:: CPACK_MONOLITHIC_INSTALL + + Disables the component-based installation mechanism. When set, the + component specification is ignored and all installed items are put in a + single "MONOLITHIC" package. Some CPack generators do monolithic + packaging by default and may be asked to do component packaging by + setting ``CPACK_<GENNAME>_COMPONENT_INSTALL`` to ``TRUE``. + +.. variable:: CPACK_GENERATOR + + List of CPack generators to use. If not specified, CPack will create a + set of options following the naming pattern + :variable:`CPACK_BINARY_<GENNAME>` (e.g. ``CPACK_BINARY_NSIS``) allowing + the user to enable/disable individual generators. If the ``-G`` option is + given on the :manual:`cpack <cpack(1)>` command line, it will override this + variable and any ``CPACK_BINARY_<GENNAME>`` options. + +.. variable:: CPACK_OUTPUT_CONFIG_FILE + + The name of the CPack binary configuration file. This file is the CPack + configuration generated by the CPack module for binary installers. + Defaults to ``CPackConfig.cmake``. + +.. variable:: CPACK_PACKAGE_EXECUTABLES + + Lists each of the executables and associated text label to be used to + create Start Menu shortcuts. For example, setting this to the list + ``ccmake;CMake`` will create a shortcut named "CMake" that will execute the + installed executable ``ccmake``. Not all CPack generators use it (at least + NSIS, WIX and OSXX11 do). + +.. variable:: CPACK_STRIP_FILES + + List of files to be stripped. Starting with CMake 2.6.0, + ``CPACK_STRIP_FILES`` will be a boolean variable which enables + stripping of all files (a list of files evaluates to ``TRUE`` in CMake, + so this change is compatible). + +.. variable:: CPACK_VERBATIM_VARIABLES + + If set to ``TRUE``, values of variables prefixed with ``CPACK_`` will be + escaped before being written to the configuration files, so that the cpack + program receives them exactly as they were specified. If not, characters + like quotes and backslashes can cause parsing errors or alter the value + received by the cpack program. Defaults to ``FALSE`` for backwards + compatibility. + +Variables for Source Package Generators +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following CPack variables are specific to source packages, and +will not affect binary packages: + +.. variable:: CPACK_SOURCE_PACKAGE_FILE_NAME + + The name of the source package. For example ``cmake-2.6.1``. + +.. variable:: CPACK_SOURCE_STRIP_FILES + + List of files in the source tree that will be stripped. Starting with + CMake 2.6.0, ``CPACK_SOURCE_STRIP_FILES`` will be a boolean + variable which enables stripping of all files (a list of files evaluates + to ``TRUE`` in CMake, so this change is compatible). + +.. variable:: CPACK_SOURCE_GENERATOR + + List of generators used for the source packages. As with + :variable:`CPACK_GENERATOR`, if this is not specified then CPack will + create a set of options (e.g. ``CPACK_SOURCE_ZIP``) allowing + users to select which packages will be generated. + +.. variable:: CPACK_SOURCE_OUTPUT_CONFIG_FILE + + The name of the CPack source configuration file. This file is the CPack + configuration generated by the CPack module for source installers. + Defaults to ``CPackSourceConfig.cmake``. + +.. variable:: CPACK_SOURCE_IGNORE_FILES + + Pattern of files in the source tree that won't be packaged when building + a source package. This is a list of regular expression patterns (that + must be properly escaped), e.g., + ``/CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*`` + +Variables for Advanced Use +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following variables are for advanced uses of CPack: + +.. variable:: CPACK_CMAKE_GENERATOR + + What CMake generator should be used if the project is a CMake + project. Defaults to the value of :variable:`CMAKE_GENERATOR`. Few users + will want to change this setting. + +.. variable:: CPACK_INSTALL_CMAKE_PROJECTS + + List of four values that specify what project to install. The four values + are: Build directory, Project Name, Project Component, Directory. If + omitted, CPack will build an installer that installs everything. + +.. variable:: CPACK_SYSTEM_NAME + + System name, defaults to the value of :variable:`CMAKE_SYSTEM_NAME`, + except on Windows where it will be ``win32`` or ``win64``. + +.. variable:: CPACK_PACKAGE_VERSION + + Package full version, used internally. By default, this is built from + :variable:`CPACK_PACKAGE_VERSION_MAJOR`, + :variable:`CPACK_PACKAGE_VERSION_MINOR`, and + :variable:`CPACK_PACKAGE_VERSION_PATCH`. + +.. variable:: CPACK_TOPLEVEL_TAG + + Directory for the installed files. + +.. variable:: CPACK_INSTALL_COMMANDS + + Extra commands to install components. The environment variable + ``CMAKE_INSTALL_PREFIX`` is set to the temporary install directory + during execution. + +.. variable:: CPACK_INSTALL_SCRIPTS + + Extra CMake scripts executed by CPack during its local staging + installation, which is done right before packaging the files. + The scripts are not called by a standalone install (e.g.: ``make install``). + For every script, the following variables will be set: + :variable:`CMAKE_CURRENT_SOURCE_DIR`, :variable:`CMAKE_CURRENT_BINARY_DIR` + and :variable:`CMAKE_INSTALL_PREFIX` (which is set to the staging install + directory). The singular form ``CMAKE_INSTALL_SCRIPT`` is supported as + an alternative variable for historical reasons, but its value is ignored if + ``CMAKE_INSTALL_SCRIPTS`` is set and a warning will be issued. + +.. variable:: CPACK_INSTALLED_DIRECTORIES + + Extra directories to install. + +.. variable:: CPACK_PACKAGE_INSTALL_REGISTRY_KEY + + Registry key used when installing this project. This is only used by + installers for Windows. The default value is based on the installation + directory. + +.. variable:: CPACK_CREATE_DESKTOP_LINKS + + List of desktop links to create. Each desktop link requires a + corresponding start menu shortcut as created by + :variable:`CPACK_PACKAGE_EXECUTABLES`. + +.. variable:: CPACK_BINARY_<GENNAME> + + CPack generated options for binary generators. The ``CPack.cmake`` module + generates (when :variable:`CPACK_GENERATOR` is not set) a set of CMake + options (see CMake :command:`option` command) which may then be used to + select the CPack generator(s) to be used when building the ``package`` + target or when running :manual:`cpack <cpack(1)>` without the ``-G`` option. + +#]=======================================================================] # Define this var in order to avoid (or warn) concerning multiple inclusion if(CPack_CMake_INCLUDED) @@ -338,7 +411,7 @@ function(cpack_encode_variables) set(value "${${var}}") endif() - string(APPEND commands "\nSET(${var} \"${value}\")") + string(APPEND commands "\nset(${var} \"${value}\")") endif() endforeach() @@ -359,22 +432,49 @@ endfunction() # Set the package name _cpack_set_default(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}") -_cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "0") -_cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "1") -_cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "1") -_cpack_set_default(CPACK_PACKAGE_VERSION - "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +# Set the package version +if(CMAKE_PROJECT_VERSION_MAJOR GREATER_EQUAL 0) + _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "${CMAKE_PROJECT_VERSION_MAJOR}") + if(CMAKE_PROJECT_VERSION_MINOR GREATER_EQUAL 0) + _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "${CMAKE_PROJECT_VERSION_MINOR}") + if(CMAKE_PROJECT_VERSION_PATCH GREATER_EQUAL 0) + _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "${CMAKE_PROJECT_VERSION_PATCH}") + endif() + endif() +else() + _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "0") + _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "1") + _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "1") +endif() +if(NOT DEFINED CPACK_PACKAGE_VERSION) + set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}") + if(CPACK_PACKAGE_VERSION_MINOR GREATER_EQUAL 0) + string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_MINOR}") + if(CPACK_PACKAGE_VERSION_PATCH GREATER_EQUAL 0) + string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_PATCH}") + endif() + endif() +endif() + _cpack_set_default(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME} built using CMake") if(CMAKE_PROJECT_DESCRIPTION) _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_DESCRIPTION}") else() _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY - "${CMAKE_PROJECT_NAME} built using CMake") + "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY}") +endif() +if(CMAKE_PROJECT_HOMEPAGE_URL) + _cpack_set_default(CPACK_PACKAGE_HOMEPAGE_URL + "${CMAKE_PROJECT_HOMEPAGE_URL}") endif() -_cpack_set_default(CPACK_PACKAGE_DESCRIPTION_FILE +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt") +_cpack_set_default(CPACK_PACKAGE_DESCRIPTION_FILE + "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE}") _cpack_set_default(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt") _cpack_set_default(CPACK_RESOURCE_FILE_README @@ -384,6 +484,12 @@ _cpack_set_default(CPACK_RESOURCE_FILE_WELCOME _cpack_set_default(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}") +# Set default directory creation permissions mode +if(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS) + _cpack_set_default(CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS + "${CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS}") +endif() + if(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL) set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) endif() @@ -446,16 +552,9 @@ macro(cpack_optional_append _list _cond _item) endif() endmacro() -#.rst: -# .. variable:: CPACK_BINARY_<GENNAME> -# -# CPack generated options for binary generators. The CPack.cmake module -# generates (when CPACK_GENERATOR is not set) a set of CMake options (see -# CMake option command) which may then be used to select the CPack -# generator(s) to be used when launching the package target. -# -# Provide options to choose generators we might check here if the required -# tools for the generates exist and set the defaults according to the results +# Provide options to choose generators we might check here if the required +# tools for the generators exist and set the defaults according to the +# results. if(NOT CPACK_GENERATOR) if(UNIX) if(CYGWIN) @@ -471,6 +570,7 @@ if(NOT CPACK_GENERATOR) option(CPACK_BINARY_TZ "Enable to build TZ packages" ON) endif() option(CPACK_BINARY_DEB "Enable to build Debian packages" OFF) + option(CPACK_BINARY_FREEBSD "Enable to build FreeBSD packages" OFF) option(CPACK_BINARY_NSIS "Enable to build NSIS packages" OFF) option(CPACK_BINARY_RPM "Enable to build RPM packages" OFF) option(CPACK_BINARY_STGZ "Enable to build STGZ packages" ON) @@ -479,10 +579,11 @@ if(NOT CPACK_GENERATOR) option(CPACK_BINARY_TXZ "Enable to build TXZ packages" OFF) endif() else() - option(CPACK_BINARY_7Z "Enable to build 7-Zip packages" OFF) - option(CPACK_BINARY_NSIS "Enable to build NSIS packages" ON) - option(CPACK_BINARY_WIX "Enable to build WiX packages" OFF) - option(CPACK_BINARY_ZIP "Enable to build ZIP packages" OFF) + option(CPACK_BINARY_7Z "Enable to build 7-Zip packages" OFF) + option(CPACK_BINARY_NSIS "Enable to build NSIS packages" ON) + option(CPACK_BINARY_NUGET "Enable to build NuGet packages" OFF) + option(CPACK_BINARY_WIX "Enable to build WiX packages" OFF) + option(CPACK_BINARY_ZIP "Enable to build ZIP packages" OFF) endif() option(CPACK_BINARY_IFW "Enable to build IFW packages" OFF) @@ -491,8 +592,10 @@ if(NOT CPACK_GENERATOR) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_CYGWIN CygwinBinary) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_DEB DEB) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_DRAGNDROP DragNDrop) + cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_FREEBSD FREEBSD) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_IFW IFW) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_NSIS NSIS) + cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_NUGET NuGet) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_OSXX11 OSXX11) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_PACKAGEMAKER PackageMaker) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_PRODUCTBUILD productbuild) @@ -542,8 +645,10 @@ mark_as_advanced( CPACK_BINARY_CYGWIN CPACK_BINARY_DEB CPACK_BINARY_DRAGNDROP + CPACK_BINARY_FREEBSD CPACK_BINARY_IFW CPACK_BINARY_NSIS + CPACK_BINARY_NUGET CPACK_BINARY_OSXX11 CPACK_BINARY_PACKAGEMAKER CPACK_BINARY_PRODUCTBUILD |