CPACK_CUSTOM_INSTALL_VARIABLES¶
在版本 3.21 中新增。
CPack 變數(例如透過 cpack -D
、CPackConfig.cmake
或 CPACK_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
。