原文位址::http://blog.sina.com.cn/s/blog_66cd08930102w74s.html
相關文章
1、Qt程式打包釋出方法(使用官方提供的windeployqt工具)----http://blog.csdn.net/iw1210/article/details/51253458
2、QT5的程式打包釋出(将QT5的工程項目打包成一個exe程式)----http://blog.csdn.net/windsnow1/article/details/78004265
3、Enigma Virtual Box 單檔案制作工具7.10去廣告版----http://download.csdn.net/download/jgcsxzy/6755371
玩qt5也有一段時間了,慚愧的是一直沒有好好的釋出過程式,因為寫的都是小程式沒啥需要用到釋出,而且qt也說不上很熟悉,本來打算到基本掌握qt之後再來研究研究怎麼打包程式,最近晚上的空閑時間多了,閑着也是閑着,于是便來試試。
在網上搜尋了一下資料,發現資料比較少,qt5打包的也隻看見幾篇博文,也不是很詳細,是以當我成功的打包了我的第一個程式之後心裡想着的就是一定要把經驗共享出來,這方法不一定是最好的,而且可能也還存在很多問題,這都有待我以後慢慢挖掘,也望大家多多指點,共同進步。 打包: (1)首先程式要想釋出,在編譯器編譯一定要選擇“release”而不是“debug”,編譯成release版本;

(2)編譯成release之後,找到目錄:
其實如果直接在這裡輕按兩下“chat.exe”也是會提示缺少的dll檔案,然後在qt的安裝目錄找對應的dll檔案,将dll複制到該目錄即可,dll在下面的路徑:(VS版本可能有點不一樣,不過都是bin目錄下的)
但是這樣我試過很多次,即使提示的dll都複制進來了,輕按兩下也可以運作了,可是放到其他電腦還是無法運作,這是因為依舊缺少檔案,如plugins下的一些插件,是以這樣還是無法打包成功的。 于是為了更加友善快捷的解決這個問題,我們使用qt自帶的 windeployqt.exe尋找依賴的檔案,我們使用批處理bat,在目前目錄(即編譯成release後的可執行程式所在目錄)建立個bat檔案:
使用記事本打開或者其他編輯工具亦可,然後把下面的代碼複制進去儲存; 如果使用的msvc版本的: C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe myexe.exe
pause
如果使用的是mingw版本的: C:\QT5\5.5\mingw492_32\bin\windeployqt.exe myexe.exe
pause
代碼解析:C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe這個是windeployqt.exe工具的路徑,要根據自己的qt安裝情況進行修改,首先在這裡看能不能找到windeployqt.exe,找到了直接把其路徑複制過來即可;myexe.exe則是你的可執行程式的名稱,不要照抄這裡的。
(3)上面步驟完成之後直接輕按兩下這個bat檔案就會把需要用到的所有dll檔案自動複制到目前目錄下:
很便捷。 這個時候再去輕按兩下你的可執行程式應該就可以運作了。
(4)接着就需要把這些檔案打包成一個exe檔案了,我們可以 用 Enigma Virtual Box這款軟體, 現在最新的版本已經是7.4了,百度一搜尋就有,然後就開始添加檔案打包了:
最後點選“執行封包”就能生成一個exe檔案,如圖示:
于是這個打包好的程式就可以放到其他電腦上運作啦。
(5)如果有需要制作成安裝包程式可以使用Inno setup這款軟體制作安裝包,當然網上還有很多其他類似的,就需要大家自己去嘗試啦,制作安裝包的方法也是類似的,準備所需要的檔案之後添加進去就可以了,網上很多這樣的教程,大家參考這篇博文:http://blog.csdn.net/ruifangcui7758/article/details/6662646。
總結,我測試過很多次打包成exe在其他電腦上運作都是沒有問題的,但是在群裡跟他人讨論的時候他們說在某些情況還是會遇到問題,比如用到OpenGL庫,一些第三方庫如opencv等這樣打包運作時就會出問題,我估計是
qt自帶的 windeployqt.exe這款工具有些庫還是找不到的,尤其是外部的庫,也就是說還是有一定的局限性,當然這隻是我的猜測,我現在還沒遇到,等遇到這種情況的時候我會再去尋找解決方法的,到時會繼續更新這篇博文。
若有什麼錯漏之處,歡迎大家指出,共同學習,一起進步啦!!