? ? ? ? 今天在發布程序的時候出了一點小問題,由于安裝了幾個不同版本的Qt,在發布32位的桌面程序時,使用了64位的Qt支持庫,因此總結一下發布程序的流程中的一些知識點:
? ? ? ? 1.debug與release的區別(待補充)
? ? ? ? 2.Qt程序的發布流程
? ? ? ? 3.程序打包(待補充)
Qt程序的發布流程
i.發布方式
?-靜態發布:將依賴的庫、資源等引入可執行程序,會生成一個比較大的可執行程序
流程參考:
?-動態發布:依賴的庫以動態鏈接庫(.dll)形式出現在可執行程序的安裝目錄下,資源以各自的文件形式出現(主要指圖片,包含可執行程序的icon、任務欄圖標等),同時可以避免使用非商業版本的Qt發布程序時的授權問題(在官網下載Qt環境時會看到官方的授權條件)。
? ? ? ? 在之前打包Qt開發的程序時,習慣使用手動拷貝Qt依賴庫(包括不同平臺上的插件,例如windows上的qwindows.dll),VS開發的程序的運行環境msvcpxxx.dll,msvcrxxx.dll等,還有.manifest文件(標明依賴組件,VS2010之后應該是不再生成了)到可執行程序的安裝目錄下,這樣做的問題是過程繁瑣,容易遺漏。
? ? ? ? Qt提供了一個工具 windeployqt.exe,可以幫助我們查找依賴的庫并自動拷貝到可執行程序所在的目錄。
ii.發布流程
1)Qt Widgets Application 可執行程序發布
首先,編譯release版可執行程序,并將可執行程序移動至一個新建的空目錄下。(注意:如果存在多個不同版本的Qt,需要注意所使用的編譯器(MW、MSVC)以及32位/64位(不共享同一套依賴庫)), 對應不同的Qt版本可以添加不同的變量,在執行命令前選擇對應的版本的環境變量添加至path,如果選擇錯了版本會出現如下錯誤:
然后,運行命令行進入該目錄,執行:windeployqt ?xxxxx.exe
最后檢查目錄中已經有了所有依賴的Qt庫
再添加需要的VS運行庫以及資源等。
2)Qt Quick Application發布(目前沒有使用QML,待補充)