QT從入門到入土(八)——項目打包和發布
引言
新手上路可謂是困難重重,你永遠不知道下一個困難會在什麼時候出現,在完成了運動控制卡封裝發布過程中可謂是舉步維艱。因此記錄一下qt5+vs2019的打包發布方法。
打包一般分為兩步:
- 將編譯後的exe可執行文件及其各種依賴dll、lib、圖標、配置文件等先打包放到一個目錄中
-
利用VS的插件Microsoft Visual Studio Installer Projects安裝程式打包插件進行打包
一,將編譯後的exe可執行文件及其各種依賴dll、lib、圖標、配置文件等先打包放到一個目錄中
(1)dumpbin指令查看可執行文件的dll依賴包
在VS開發人員命令提示符(vs介面->工具->命令行->開發者命令提示)中執行dumpbin /dependents 程式路徑 :dumpbin/dependents C:\Users\WFD\Desktop\GCtest\Debug\GCtest

(2)windeployqt.exe指令自動將qt依賴包複製過來
1️⃣先打開 Qt 的命令行(用的32位)

2️⃣使用「cd/d 路徑」 命令進入到包含.exe 文件的文件夾。
3️⃣ Qt 命令行執行 windeployqt 工具,輸入: 「windeployqt ***.exe」 ,就可以將qt依賴包複製到該文件夾中


(3)非Qt依賴庫的添加
要注意release版本與debug版本所需要的依賴是不一樣的,需要分別打包!!!
- 方法一
在通過vs的dumpbin指令查詢到可執行文件的dll依賴包後,使用eyerything軟體根據位置去尋找dll文件。
下載地址://www.voidtools.com/

- 方法二
如果動態庫有很多那麼複製起來很麻煩(比如上面Qtcore.dll查找到很多路徑,但是不知道用哪個),可以使用window的批處理:
通過觀察程式運行時Vs輸出窗口中載入的dll庫:

- 方法三
使用Dependency Wallker 打開***.exe 查找不存在的.dll,其中黃色的問號標識是不存在的。Dependency Wallker可以遞歸顯示可執行文件(exe)和動態庫(dll)調用的動態庫。
打開**.exe文件之後各個節點可能是展開的很亂,可以右擊任意節點選擇「摺疊所有(L)」,然後再單擊根節點的加號展開就是如圖所示的樣式,這樣很清晰。
在全部添加完依賴庫後,點擊exe運行文件就可以本機運行了。下一步就是打包發布(即可以在未裝vs和qt機器上運行)
二,利用VS的插件Microsoft Visual Studio Installer Projects安裝程式打包插件進行打包
安裝過程不再詳述參見:Installer Projects插件的安裝
(1)新建安裝項目
解決方案->新建項目->setup project

進入文件系統:(setup1->view->文件系統)

(2)添加文件
Application Folder->add->文件(在此添加相關的依賴資源)

將exe所在目錄下的所有文件添加到該處
(3)添加項目輸出
Application Folder->add->項目輸出(主程式入口)

對主輸出創建快捷方式,並將其拖動到User『s Desktop內

(4)打包發布
對setup1項目進行重新生成,即生成安裝程式

