Qt项目打包发布超详细教程
文章目錄
- 前期準備工作
- 一、發布方式
- (一)手動發布
- (二)windeployqt發布
- 二、打包成.exe安裝包
注意:后面的所有語句中涉及到編譯器的,請大家自行替換成自己用的編譯器,我這里使用的是MinGw的
?
前期準備工作
1.首先肯定要準備好你的Qt項目
2.以Release方式構建運行
以release的方式進行構建運行,這樣生成的.exe文件(項目發布需要)大小會小很多,而Debug方式下產生的.exe文件帶有許多調試信息,文件比較大
3.構建運行后,就可以在你的構建目錄看到構建后的一些文件了
提示:如果編譯之后找不到Releases文件夾在哪,可以按圖操作查看編譯的文件夾在哪
?
一、發布方式
分享 Qt 程序(項目)的方式無非兩種,要么直接分享程序的源代碼,要么分享程序生成的可執行文件。
?
和直接分享源碼相比,大多數人會選擇后者。但遺憾地是,Qt Creator 默認以動態鏈接的方式生成可執行文件,該文件無法獨立運行,必須為其提供所需的動態鏈接庫。也就是說,只分享 Qt Creator 生成的可執行文件是不行的,必須將運行所需的動態鏈接庫一起分享,可執行文件才能在他人的電腦上正常運行。
?
對 Qt 程序進行打包,指的就是找到可執行文件運行需要的所有動態庫文件,并將它們統一存放到指定的空文件夾里。
?
通過以下兩種發布方式操作完成過后就可以通過壓縮軟件打包成壓縮包發給你朋友使用。讓朋友解壓過后點擊你的.exe文件就可以運行了
(一)手動發布
提示:此方式僅可用于有Qt環境的電腦上運行,發給朋友時需要要他的電腦上裝有Qt
1. 桌面單獨新建一個文件夾,將需要的打包發布的文件放在一起,方便后續操作
2. 需要的文件:
(1)release文件夾下的exe文件
(2)你自己所用到的所有數據文件
(3)mingw的bin目錄下的:Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll、libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll
(再次提醒:如果你是MSVC編譯器編譯運行的,請在MSVC的bin目錄下查找這些所需文件,下面的platforms文件夾也要從MSVC的目錄下復制過來。但是經過我的操作,libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll這三個文件并沒有在MSVC的bin目錄中找到,但卻報錯缺少這三個文件,所以這三個還是照樣把mingw的bin目錄下的拷過來,問題就解決了)
總之,直接點擊運行你的.exe文件,運行失敗,提示缺少什么文件你就從bin目錄下一個一個對應的找到并復制過來
3.有的人將所提示缺少的依賴庫文件都添加過來后卻報錯This application failed to start because no Qt platform plugin could be initialized.
解決辦法有幾種:
(1)將自己對應編譯器目錄下plugin文件夾中的platforms文件夾直接復制到項目.exe的所在目錄下就可以了,這是最簡單的,一般就這樣操作即可
(2)第二種在用戶變量中添加如下內容: 變量名:QT_QPA_PLATFORM_PLUGIN_PATH 變量值:%QTDIR%\plugins\platforms\
(3)直接添加系統path變量E:\Qt\5.15.2\mingw81_64\bin,你自己對應編譯器的bin目錄
(用戶變量只對當前用戶有效,系統變量對所有用戶有效。添加了環境變量后就不用自己在去加依賴庫了,它會自己去設置的變量路徑找,對此可以看看環境變量的解釋:作者:wdf過河的小卒子)
?
?
至此,就可以將文件夾壓縮發送給你朋友了,記住對方要安裝有Qt哦,再附上我自己的操作最終文件夾圖
?
(二)windeployqt發布
提示:此方法可在沒有安裝Qt環境的電腦上運行,不需要對方安裝有Qt
1.windeployqt工具:
windeployqt 是 Qt 提供的 Windows 平臺打包工具,它能自己找到 .exe 可執行文件需要的所有動態鏈接庫,并將它們拷貝到當前文件夾中。
2.照樣是桌面單獨新建一個文件夾,方便后續操作:
這里我們只放入.exe文件和你自己的一些數據文件,其它所需要的依賴庫文件讓windeploy來幫我們添加
3.具體操作:
(1)win+R輸入cmd打開命令窗口,通過cd命令進入到我們要操作的文件夾(.exe所在文件夾),cd /d C:\Users\BaiYang\Desktop\asd,或者直接在文件窗口地址欄輸入cmd回車
(2)執行 “windeployqt ExamSys.exe” 命令,換成自己的.exe名字
解決辦法:添加系統path變量E:\Qt\5.15.2\mingw81_64\bin,你自己對應編譯器的bin目錄,然后重新打開命令窗口,重新執行cd和windeployqt命令
(3)到這一步直接雙擊 .exe文件,如果它可以成功執行,表明打包操作是成功的。我們可以直接將文件夾壓縮分享給他人,只要是 Windows 平臺,都可以直接點擊運行 .exe 文件。
(4)注意事項
①windeployqt可能從別處找了個一樣名字的過來,并不是bin目錄下的,版本號就是不對的。把它和bin目錄下同名的比較大小,大小不對一般就是拿錯了,自己從bin目錄里面復制過來就行
②打包發給別人后卻報錯,我們在自己電腦上點擊卻能正常運行:
解決辦法:我們自己能運行是因為之前在執行windeploy命令時將bin目錄添加進了環境變量,缺少的文件它會自己去找,但是對方的電腦就不一定了,所以我們還需要手動加上所提示的缺少文件,一般就是少了libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll這三個文件
?
至此,也可以將文件夾壓縮發送給你朋友了。操作很簡單,但是有很多小細節需要注意,所以講的篇幅也較其它文章多。感謝您的耐心
?
二、打包成.exe安裝包
其實完成發布操作,就可以將整個文件夾發布出去了,但如果想打包成一個 exe 安裝包,還需要一點操作。Windows環境將應用程序打包成一個exe應用,就像我們平常下載軟件一樣,以便給沒有Qt環境的用戶使用。
?
Windows 安裝程序制作軟件有許多,我這里使用的是NSIS + NisEdit來制作,使用NIS Edit打包程序,但是語言包必須Nsis支持實現;
?
背景還是windeployqt過后的那個文件夾,記住,沒有libgcc_s_seh-1.dll libstdc+±6.dll libwinpthread-1.dll記得加上,有些人把bin添加進了環境變量,它會自己去找這三個文件,所以不會報錯,但別人電腦就不會了
1.在發布的文件夾中添加程序安裝圖標、卸載圖標及 License.txt 自述文件.如下圖
注意:直接將 xxx.jpg 或 xxx.png 后綴改為 xxx.ico 是不能將圖片轉為圖標的。
在線轉 icon 網址:https://app.xunjiepdf.com/img2icon/
注意生成圖標時候像素選擇大點,如 256*256。License.txt 文件內容可自行定義
2.安裝NSIS和腳本編輯器NisEdit
可以評論區或私信我發給你們,我不是那種還需要積分,付費才能下載的對吧,新人哪來的積分,我們主打的就是一個學習
3.運行腳本編輯器(NisEdit):詳細打包步驟可以看作者:急支糖漿123
? 文件 --> 新建腳本:向導
若安裝程序語言里面一片空白,沒有語言選項時(NSIS 已安裝),設置下編譯器及幫助路徑,
設置方法:
回到剛剛步驟,接著往下操作
這里不含文件夾,因為文件夾里面的東西并不是所有都需要,待會篩選幾個文件出來單獨添加就好了,全加進去也是可以的。
安裝后桌面圖標如下圖,大家可自行卸載
文章止于風景,青春綻放于現在
總結
以上是生活随笔為你收集整理的Qt项目打包发布超详细教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业网站建设的详细教程
- 下一篇: 推荐8个炫酷的 Python 装饰器!