QT寫界面還是很不錯,就是打包會比較麻煩,折騰了一天總算是打包完成了。
QT軟件的打包發布一個難點是必備dll文件的識別,現在高版本QT自帶了一個windeployqt工具,直接會把需要的dll生成一份,放在軟件的目錄里面。
參考官方文檔:http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies
具體使用步驟如下:
1.添加qt的bin/目錄進系統path變量。很簡單,在系統屬性里設置,添加D:\QT\QT5.4.1mingw\5.4\mingw491_32\bin;(分號不能掉)到系統path環境變量(不會添加環境變量問度娘)
第二部,在任意目錄新建文件夾,把編譯完成后的Calc.exe可執行程序拷貝過去。從命令行模式進入該文件夾,執行語句windeployqt Calc.exe. 之后該工具會分析程序依賴性,自動添加必要dll文件至該目錄。運行時命令行提示如下:
D:\e>windeployqt Calc.exe D:\e\Calc.exe 32 bit, release executab Adding Qt5Svg for qsvgicon.dll Direct dependencies: Qt5Core Qt5Gui Qt All dependencies : Qt5Core Qt5Gui Qt To be deployed : Qt5Core Qt5Gui Qt Updating icuin53.dll. Updating icuuc53.dll. Updating icudt53.dll. Updating Qt5Core.dll. Updating Qt5Gui.dll. Updating Qt5Svg.dll. Updating Qt5Widgets.dll. Creating directory iconengines. Updating qsvgicon.dll. Creating directory imageformats. Updating qdds.dll. Updating qgif.dll. Updating qicns.dll. Updating qico.dll. Updating qjp2.dll. Updating qjpeg.dll. Updating qmng.dll. Updating qsvg.dll. Updating qtga.dll. Updating qtiff.dll. Updating qwbmp.dll. Updating qwebp.dll. Creating directory platforms. Updating qwindows.dll. Creating qt_ca.qm... Creating qt_cs.qm... Creating qt_de.qm... Creating qt_fi.qm... Creating qt_hu.qm... Creating qt_it.qm... Creating qt_ja.qm... Creating qt_ru.qm... Creating qt_sk.qm... Creating qt_uk.qm... D:\e>
這樣必要的庫文件就自動添加完畢.
2.一般情況下,還是會少一兩個.dll 用depends軟件檢測一下,看看還缺什么?
找到除了API-MS的包,在D:\QT\QT5.4.1mingw\5.4\mingw491_32\bin目錄里面復制到軟件的根目錄。
3.前兩步下來,dll徹底找完了,現在就該輪到打包工具 EnigmaVirtual Box
在“Enter Input File Name”一欄指定Qt編譯生成的 *.exe 文件,同時在“EnterOutput File Name”一欄會自動生成打包后輸出文件的路徑和文件名稱。(請無視中間的廣告!)
點擊左下方的“Add…”按鈕,添加所有的依賴鏈接庫文件;然后點擊右下方的“FilesOptions”,在彈出的對話框里選中“Enable Files Virtualization”和“CompressFiles”兩項;“OK”后返回點擊“Process”並等待小伙伴干完該干的活。
在“Enter Input File Name”一欄指定Qt編譯生成的 *.exe 文件,同時在“EnterOutput File Name”一欄會自動生成打包后輸出文件的路徑和文件名稱。(請無視中間的廣告!)
點擊左下方的“Add…”按鈕,添加所有的依賴鏈接庫文件;然后點擊右下方的“FilesOptions”,在彈出的對話框里選中“Enable Files Virtualization”和“CompressFiles”兩項;“OK”后返回點擊“Process”並等待小伙伴干完該干的活。
這樣你就成功了。
Qt5.4 主要依賴鏈接庫說明
1.QT模塊庫
1 2 3 4 |
Qt5Core.dll #QT核心庫 Qt5Gui.dll #QT Gui庫 Qt5Widgets.dll #QT Widgets庫,QT 5中GUI程序基本都需要此dll #還有其他程序用到的Qt5XXX.dll |
2.ICU依賴庫
(International Component for Unicode,Unicode工具)
1 2 3 |
icudt51.dll icuin51.dll icuuc51.dll |
3.QT插件庫(新增庫,路徑必須正確)
1 2 3 4 5 6 |
# 根據不同的程序,需要不同的插件庫 #例如 QT_DIR/plugins/*/*.dll # 需要將 platforms/*.dll,accessible/*.dll的文件結構保留 # 放在你所編譯的程序所在目錄 plugins/platforms/qwindows.dll plugins/accessible/qtaccessiblewidgets.dll |
4.EGL依賴庫,為OpenGL,OpenGL es提供接口
1 2 |
libEGL.dll libGLESv2.dll |
5.mingw依賴庫(msvc編譯則無需這些庫)
1 2 3 |
libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll |
6.VC運行庫(mingw編譯則無需這些庫)
1 2 |
msvcr110.dll(對應VS2012) msvcp110.dll |
最后發一張程序的效果圖,附帶上程序和源代碼的下載鏈接:http://pan.baidu.com/s/1dD1y8wh 密碼:oa9h