CPACK_CUSTOM_INSTALL_VARIABLES

New in version 3.21.

CPack variables (set via e.g. cpack -D, CPackConfig.cmake or CPACK_PROJECT_CONFIG_FILE scripts) are not directly visible in installation scripts. Instead, one can pass a list of varName=value pairs in the CPACK_CUSTOM_INSTALL_VARIABLES variable. At install time, each list item will result in a variable of the specified name (varName) being set to the given value. The = can be omitted for an empty value.

CPACK_CUSTOM_INSTALL_VARIABLES allows the packaging installation to be influenced by the user or driving script at CPack runtime without having to regenerate the install scripts.

Example

install(FILES large.txt DESTINATION data)

install(CODE [[
  if(ENABLE_COMPRESSION)
    # "run-compressor" is a fictional tool that produces
    # large.txt.xz from large.txt and then removes the input file
    execute_process(COMMAND run-compressor $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/large.txt)
  endif()
]])

With the above example snippet, cpack will by default run the installation script with ENABLE_COMPRESSION unset, resulting in a package containing the uncompressed large.txt. This can be overridden when invoking cpack like so:

cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"

The installation script will then run with ENABLE_COMPRESSION set to TRUE, resulting in a package containing the compressed large.txt.xz instead.