這幾天在研究Qt,首先嘗試用Qt Creator編寫一些小程序來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程序,只能在本機運行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的編程時,也遇到過,無非就是一些運行時庫的問題導致的。當時的做法時,根據程序運行時報錯所缺失的庫,一個一個手工查找和拷貝,收集全部所依賴的庫到程序目錄下,程序就可以正常運行了。因此,對於這次的情況,我原本也打算這么做。但是,無意間在一篇博客里看到,Qt的設計者其實一早就料到有這種情況發生的,所以,他們為Qt專門設計了一個發行程序時自動對依賴庫打包的工具,可以全自動為用戶完成上述工作,那可就方便多了。下面就對這個工具的用法進行介紹:
1
、首先找到這個工具,這個工具叫做“windeployqt”。它一般位於Qt安裝目錄下的
mingw_XX\bin目錄下,像我的目錄就在C:\ProgramData\Qt\5.8\mingw53_32\bin。
此時,建議將整個目錄直接加入系統環境變量,便於后續使用。
2、編譯你的程序,注意必須是release版本。debug版本的貌似不行。
3、啟動cmd,進入到你要發布的程序所在的目錄,比如我的程序放在D:\Test目錄下,就輸入”cd /d d:\test”,記住里面一定要加”/d”的參數,否則將無法進入該目錄。
4、確認你的程序是用Qt Creator哪個模式設計的,總共有2個模式,Qt Widgets Application和Qt Quick Application,不同模式下的參數命令是不一樣的:
?在Qt Widgets Application模式下
?在Qt Widgets Application模式下
輸入”windeployqt hello.exe”命令,其中hello.exe是我的程序名稱。
?Qt Quick Application模式下
?Qt Quick Application模式下
輸入”windeployqt hello.exe –qmldir”命令, 其中hello.exe是我的程序名稱,qmldir是你的qml目錄,這個目錄一般位於mingwXX目錄下,像我的目錄就在C:\ProgramData\Qt\5.8\mingw53_32\qml。
5、輸入上述命令之后,
Qt就會自動復制它所依賴的各個插件文件夾和 dll文件、qm文件,得到的就完整的 exe 程序發布集合,依賴關系都解決好了,可以直接發布到其他的電腦上運行。
6、要注意的是,按照上述步驟完成之后,仍有可能會提示dll缺失信息,像我就遇到了缺失的提示。不過,好在此時缺失的dll很少(我遇到的就只有3個:libwinpthread-1.dll、libstdc++-6.dll、以及libgcc_s_dw2-1.dll),可以手動去復制,根據我的經驗,
可以直接在C:\ProgramData\Qt\5.8\mingw53_32\bin目錄下面找到這幾個dll。
7、其他未盡事項,建議大家參考以下這篇博文,介紹的非常詳細。
http://blog.csdn.net/liuyez123/article/details/50462637
8、搞定,收工!