CPACK_CUSTOM_INSTALL_VARIABLES

3.21 版本新增。

CPack 变量(例如通过 cpack -DCPackConfig.cmakeCPACK_PROJECT_CONFIG_FILE 脚本设置)在安装脚本中不可直接见。相反,可以通过 CPACK_CUSTOM_INSTALL_VARIABLES 变量传递一个 varName=value 对的列表。在安装时,每个列表项将导致一个具有指定名称(varName)的变量被设置为给定的 value。对于空的 value,可以省略 =

CPACK_CUSTOM_INSTALL_VARIABLES 允许在 CPack 运行时通过用户或驱动脚本来影响打包安装,而无需重新生成安装脚本。

示例

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()
]])

在上面的示例片段中,cpack 默认将以未设置 ENABLE_COMPRESSION 的方式运行安装脚本,从而生成一个包含未压缩的 large.txt 的包。这可以通过像这样调用 cpack 来覆盖:

cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"

然后,安装脚本将以 ENABLE_COMPRESSION 设置为 TRUE 的方式运行,从而生成一个包含压缩的 large.txt.xz 的包,而不是未压缩的文件。