CPACK_CUSTOM_INSTALL_VARIABLES

在版本 3.21 中新增。

CPack 變數(例如透過 cpack -DCPackConfig.cmakeCPACK_PROJECT_CONFIG_FILE 腳本設定)在安裝腳本中並非直接可見。相反地,可以將 varName=value 配對的列表傳遞至 CPACK_CUSTOM_INSTALL_VARIABLES 變數中。在安裝時,每個列表項目都會導致以指定的名稱 (varName) 建立一個變數,並設定為給定的 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