qt5.5程序打包發佈以及依賴【轉】

玩qt5也有一段時間了,慚愧的是一直沒有好好的發佈過程序,由於寫的都是小程序沒啥須要用到發佈,並且qt也說不上很熟悉,原本打算到基本掌握qt以後再來研究研究怎麼打包程序,最近晚上的空閒時間多了,閒着也是閒着,因而便來試試。html

在網上搜索了一下資料,發現資料比較少,qt5打包的也只看見幾篇博文,也不是很詳細,因此當我成功的打包了個人第一個程序以後內心想着的就是必定要把經驗共享出來,這方法不必定是最好的,並且可能也還存在不少問題,這都有待我之後慢慢挖掘,也望你們多多指點,共同進步。
打包:
(1)首先程序要想發佈,在編譯器編譯必定要選擇「release」而不是「debug」,編譯成release版本;
qt5.5程序打包發佈以及依賴
 
  (2)編譯成release以後,找到目錄:
qt5.5程序打包發佈以及依賴

其實若是直接在這裏雙擊「chat.exe」也是會提示缺乏的dll文件,而後在qt的安裝目錄找對應的dll文件,將dll複製到該目錄便可,dll在下面的路徑:(VS版本可能有點不同,不過都是bin目錄下的)
qt5.5程序打包發佈以及依賴可是這樣我試過不少次,即便提示的dll都複製進來了,雙擊也能夠運行了,但是放到其餘電腦仍是沒法運行,這是由於依舊缺乏文件,如plugins下的一些插件,所以這樣仍是沒法打包成功的。
因而爲了更加方便快捷的解決這個問題,咱們使用qt自帶的windeployqt.exe尋找依賴的文件,咱們使用批處理bat,在當前目錄(即編譯成release後的可執行程序所在目錄)新建個bat文件:
qt5.5程序打包發佈以及依賴
使用記事本打開或者其餘編輯工具亦可,而後把下面的代碼複製進去保存;
若是使用的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文件自動複製到當前目錄下:
qt5.5程序打包發佈以及依賴
很便捷。
這個時候再去雙擊你的可執行程序應該就能夠運行了。
 
(4)接着就須要把這些文件打包成一個exe文件了,咱們能夠用Enigma Virtual Box這款軟件, 如今最新的版本已是7.4了,百度一搜索就有,而後就開始添加文件打包了:

qt5.5程序打包發佈以及依賴

qt5.5程序打包發佈以及依賴
最後點擊「執行封包」就能生成一個exe文件,如圖示:
qt5.5程序打包發佈以及依賴因而這個打包好的程序就能夠放到其餘電腦上運行啦。小程序

 
(5)若是有須要製做成安裝包程序可使用Inno setup這款軟件製做安裝包,固然網上還有不少其餘相似的,就須要你們本身去嘗試啦,製做安裝包的方法也是相似的,準備所須要的文件以後添加進去就能夠了,網上不少這樣的教程,你們參考這篇博文:http://blog.csdn.net/ruifangcui7758/article/details/6662646。
 
 
總結,我測試過不少次打包成exe在其餘電腦上運行都是沒有問題的,可是在羣裏跟他人討論的時候他們說在某些狀況仍是會遇到問題,好比用到OpenGL庫,一些第三方庫如opencv等這樣打包運行時就會出問題,我估計是 qt自帶的windeployqt.exe這款工具備些庫仍是找不到的,尤爲是外部的庫,也就是說仍是有必定的侷限性,固然這只是個人猜想,我如今還沒遇到,等遇到這種狀況的時候我會再去尋找解決方法的,到時會繼續更新這篇博文。
相關文章
相關標籤/搜索