Qt5.9程序打包發(fā)布的實現
(Windows平臺)Qt編譯的程序如何在其他沒有安裝Qt的電腦上運行呢,本文將告訴你答案
編譯工程
這里拿官方的一個例程作為目標工程,選擇 Release
的方式編譯工程,
編譯完成后,程序自動運行(如下圖),找到可執(zhí)行文件的位置(可在項目構建目錄中查找),
將可執(zhí)行文件單獨復制出來,放在一個空文件夾中,
此時該文件是無法運行的,如果這是一個C或C++程序,是可以直接運行的,除非你沒有把Qt關鍵的庫加到環(huán)境變量(如果要在其他沒裝Qt的機器上運行C/C++程序,則需要把那幾個庫一起打包,后面介紹)
運行windeployqt
windeployqt 是Qt自帶的一個命令工具,位于Qt的編譯器的bin目錄下,比如我路徑為:Qt5.9.0\5.9\mingw53_32\bin
,
這是一個命令工具,不能直接運行,需要先打開控制臺(輸入Win+R,接著輸入cmd后回車),復制可執(zhí)行文件所在路徑名,在控制臺輸入cd /d
+ 可執(zhí)行文件路徑名(右鍵可粘貼),進入打包目錄,
接著將 windeployqt.exe
的絕對路徑復制到控制臺,后面加上要打包的可執(zhí)行文件,
回車運行,該工具會把可執(zhí)行文件所有的依賴庫(除了幾個Qt核心庫)都拷貝到可執(zhí)行文件所在目錄下,
此時打包文件夾出現了很多庫文件和若干文件夾(里面也是庫),
此時再次運行打包文件下的可執(zhí)行文件,如果出現以下錯誤,極有可能是Qt核心庫沒有被添加到環(huán)境變量(當然,把所需要的庫直接拷貝到打包文件夾下也是可行的,且這是打包的最后一步,詳見下文),
添加完環(huán)境變量后,Qt程序已經可以成功運行:
添加必要的庫
上面的可執(zhí)行文件之所以可以直接運行,歸功于 windeployqt.ext
生成的依賴庫和全局變量中的部分庫,但是打包文件夾中只有 wineployqt.exe
生成的庫,所以要想讓可執(zhí)行文件能在其他沒有安裝Qt的電腦運行,我們還需要拷貝幾個基本的庫。
這些庫在 Qt5.9.0\Tools\mingw530_32\bin
目錄下(這里只是我電腦上的目錄,僅供參考),一般情況下只需要拷貝下面3個庫(保險起見,也可以把該目錄下所有.dll
文件都拷貝走)。
此時,即使去掉環(huán)境變量里的Qt相關庫,打包好的文件依然可以運行(在其他電腦亦可運行,前提是系統(tǒng)相同)。
遇到的一個問題
之前我按照上面的方法打包一個在Qt上編譯的可執(zhí)行文件,但是出現 xxx.exe does not seem to be a Qt executable.
的報錯,說這不是一個Qt可執(zhí)行文件,我到網上找了很久都沒找到解決辦法,最后發(fā)現 windeployqt.exe
不能用在 C/C++ 的可執(zhí)行文件上,或者說 C/C++ 可執(zhí)行文件只需要上面3個基本庫就能在其他機器上運行,根本用不到其他的Qt庫。
到此這篇關于Qt5.9程序打包發(fā)布的實現的文章就介紹到這了,更多相關Qt5.9 打包發(fā)布內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
OpenCV霍夫變換(Hough Transform)直線檢測詳解
這篇文章主要為大家詳細介紹了OpenCV霍夫變換直線檢測的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12