diff options
author | Nils Gladitz <n.gladitz@abberior-instruments.com> | 2021-05-19 10:10:58 (GMT) |
---|---|---|
committer | Craig Scott <craig.scott@crascit.com> | 2021-05-23 22:21:49 (GMT) |
commit | 26e36111d326bbf69f437ef1335423ea3b2835e2 (patch) | |
tree | badbd556c99870e9729e9fdc84eb304d70d34876 /Help/variable | |
parent | d98a7cdb25611ed6f1e856fd4c4ff980225b89cd (diff) | |
download | CMake-26e36111d326bbf69f437ef1335423ea3b2835e2.zip CMake-26e36111d326bbf69f437ef1335423ea3b2835e2.tar.gz CMake-26e36111d326bbf69f437ef1335423ea3b2835e2.tar.bz2 |
CPack: Implement new variable CPACK_CUSTOM_INSTALL_VARIABLES
The new variable allows projects to define custom key=value pairs of
variables to be set in CPack cmake_install.cmake script invocations.
This allows install(SCRIPT|CODE) to be parameterized at runtime.
Diffstat (limited to 'Help/variable')
-rw-r--r-- | Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst b/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst new file mode 100644 index 0000000..534e2ad --- /dev/null +++ b/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst @@ -0,0 +1,42 @@ +CPACK_CUSTOM_INSTALL_VARIABLES +------------------------------ + +CPack variables (set via e.g. ``cpack -D``, ``CPackConfig.cmake`` or +:variable:`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 +""""""" + +.. code-block:: cmake + + 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, :manual:`cpack <cpack(1)>` 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 :manual:`cpack <cpack(1)>` like so: + +.. code-block:: shell + + 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. |