2013-06-20 44 views

回答

2

它一般應該是。但是,清楚地運行安裝程序將阻止CMake進程,直到用戶完成安裝程序的所有必需輸入爲止。

下面是7-Zip的安裝程序利用的file(DOWNLOAD ...)execute_process一個例子:

set(DownloadedMsi ${CMAKE_BINARY_DIR}/7z920-x64.msi) 

file(DOWNLOAD http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7z920-x64.msi/download 
    ${DownloadedMsi} 
    TIMEOUT 30 
    STATUS StatusVar 
    LOG LogVar 
    EXPECTED_HASH SHA1=4173fea2af9a595fa0be1ef8251f412229687be1) 

message("\${StatusVar} - ${StatusVar}") 
message("\${LogVar} - ${LogVar}\n\n\n") 

execute_process(COMMAND cmd /c "${DownloadedMsi}" 
       RESULT_VARIABLE ResultVar 
       OUTPUT_VARIABLE OutputVar 
       ERROR_VARIABLE ErrorVar) 

message("\${ResultVar} - ${ResultVar}") 
message("\${OutputVar} - ${OutputVar}") 
message("\${ErrorVar} - ${ErrorVar}") 
+0

感謝。運行「MsiExec」而不是cmd可能會更好,但最終我發現它更適合於將適當的dll和lib放入我們的源代碼控制系統並從那裏提取它們。 – gerardw