1. 程式人生 > >Qt官方開發環境生成的exe釋出方式--使用windeployqt

Qt官方開發環境生成的exe釋出方式--使用windeployqt

轉自 http://tieba.baidu.com/p/3730103947

Qt 官方開發環境使用的動態連結庫方式,在釋出生成的exe程式時,需要複製一大堆 dll,

如果自己去複製dll,很可能丟三落四,導致exe在別的電腦裡無法正常執行。
因此 Qt 官方開發環境裡自帶了一個工具:windeployqt.exe。
以官方 Qt 5.4.0+MinGW 開發環境為例,
從開始選單--》Qt 5.4.0--》5.4--》MinGW 4.9 (32-bit)--》Qt 5.4 for Desktop (MinGW 4.9 32 bit),可以開啟 Qt 命令列,從這裡就可以執行 windeployqt 工具。


整合開發環境 QtCreator 目前生成圖形介面程式 exe 大致可以分為兩類:

Qt Widgets Application 和 Qt Quick Application。
下面分別介紹這兩類exe 的釋出方式。


1、Qt Widgets Application可執行程式釋出方式
首先用 QtCreator 新建一個 Qt Widgets Application 專案,直接用預設的 QMainWindow 程式就可以了,專案名字假定是 hellomw。
然後以 Release 方式編譯生成 exe 程式:


生成的程式執行正常之後,找到專案的生成目錄,比如 專案原始碼路徑:
C:\QtPros\hellomw\
它的專案生成目錄是
C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\

進入這個資料夾,在進入它的子資料夾 release 裡面,找到 hellomw.exe ,
將這個exe 複製到一個新的單獨的資料夾裡用於釋出,比如存到 
D:\hellomw\ 資料夾裡面。


然後從開始選單開啟 Qt 命令列,輸入命令 :
cd /d D:\hellomw
然後使用 windeployqt 工具命令:
windeployqt hellomw.exe


然後可以在 D:\hellomw 資料夾裡看到 windeployqt 工具自動複製的外掛資料夾
和 dll檔案、qm檔案。這時候得到的就完整的 exe 程式釋出集合,依賴關係都解決好了。


把 D:\hellomw 資料夾 打包就可以釋出了,不用自己一個個找 dll 檔案了。

D:\hellomw 資料夾裡的qm檔案是多國語言翻譯檔案,不需要可以刪了,
其他的都保留。


2、Qt Quick Application釋出方式
首先用 QtCreator 新建一個 Qt Quick Application 專案,直接用預設的專案模版,點選下一步生成專案,專案名字假定是 helloqml。
然後以 Release 方式編譯生成 exe 程式:


然後找到專案的構建目錄,比如專案原始碼目錄 C:\QtPros\helloqml,
它的構建目錄是:
C:\QtPros\build-helloqml-Desktop_Qt_5_4_0_MinGW_32bit-Release\
進入這個目錄,再進入 release 子資料夾,找到 helloqml.exe ,
複製到一個新的單獨的資料夾裡面,比如 D:\helloqml\ 資料夾裡面。


然後從開始選單開啟 Qt 命令列,進入D:\helloqml\資料夾:
cd /d D:\helloqml
然後使用 windeployqt 工具命令:
windeployqt helloqml.exe --qmldir C:\Qt\Qt5.4.0\5.4\mingw491_32\qml


注意不要跟燒包一樣照抄上條命令,--qmldir 是指出 Qt 庫裡面的 qml 資料夾位置,
上面命令裡 C:\Qt\Qt5.4.0 是 Qt 官方開發環境安裝的資料夾,
C:\Qt\Qt5.4.0\5.4\mingw491_32 是Qt類庫的目錄(QTDIR),
因此使用的 --qmldir 後面寫的是 C:\Qt\Qt5.4.0\5.4\mingw491_32\qml 
讀者Qt環境安裝路徑不一樣,要根據實際情況修改!


然後可以看到 D:\helloqml 資料夾裡有一大堆檔案,就是 QtQuick程式需要的依賴檔案。
將整個 D:\helloqml 資料夾 打包就可以釋出出去,在別的電腦上使用。


這個 D:\helloqml 資料夾裡的東西很多,看不懂就不要刪,老老實實打包釋出就行了。


上面是最簡單的程式釋出,實際複雜程式可能還帶一些圖片檔案、資料庫檔案、配置檔案之類的,可以按自己需要新增這些檔案到釋出資料夾裡面。