使用VS2022開(kāi)發(fā)并部署QT應(yīng)用實(shí)現(xiàn)
QT Creator默認(rèn)使用minGW編譯QT應(yīng)用,但是在windows平臺(tái)上,minGW編譯后用QT官方工具(windeployqt)部署,然后移植到?jīng)]有安裝QT運(yùn)行時(shí)的環(huán)境中運(yùn)行,大概率會(huì)出現(xiàn)找不到動(dòng)態(tài)鏈接庫(kù)或者無(wú)法定位鏈接庫(kù)入口之類(lèi)的問(wèn)題,兼容性不好,因此,選擇用MSVC編譯并部署QT應(yīng)用,在windows平臺(tái)可能是一個(gè)更好的選擇。
1、相關(guān)工具的安裝與配置
要使用MSVC編譯QT應(yīng)用,必須先安裝與QT版本對(duì)應(yīng)的VS版本。QT6.9支持的VS版本為VS2022。安裝完VS2022后,需要進(jìn)行一些配置。
1.1、VS2022文件編碼配置
VS2022默認(rèn)使用操作系統(tǒng)編碼頁(yè)(中文windows使用936(GBK)),而QT框架的程序源代碼最好使用65001(UTF-8無(wú)BOM),如果不變更VS2022的默認(rèn)編碼,不但源代碼中的中文字符會(huì)變成亂碼,編譯也會(huì)失敗。處理好VS2022環(huán)境編碼問(wèn)題推薦執(zhí)行以下操作:
1.1.1、修改VS2022環(huán)境中文檔的默認(rèn)編碼:

這一步修改會(huì)使VS2022中創(chuàng)建的新文件會(huì)以UTF-8編碼保存,打開(kāi)編碼不明的文件時(shí)優(yōu)先以UTF-8編碼解析。
1.1.2、創(chuàng)建項(xiàng)目時(shí),可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)文件名為“.editorconfig”的文件,在其中對(duì)編輯器編碼等作出規(guī)定:
# 明確所在目錄是項(xiàng)目根目錄,這樣編輯器不會(huì)向父目錄繼續(xù)尋找.editorconfig root = true # 以下規(guī)則對(duì)于所有文件生效,注意中括號(hào)不能省 [*] # 縮進(jìn)風(fēng)格,以下兩條規(guī)則也可以直接用indent_size = 4代替 indent_style = tab # 縮進(jìn)寬度 tab_width = 4 # 文件編碼格式,指定文件編碼格式 charset = utf-8 # 行尾格式,Windows一般為CRLF,Linux一般為L(zhǎng)F,根據(jù)需要更改 end_of_line = crlf # 文件結(jié)尾添加換行符,以防警告 insert_final_newline = true
1.1.3、如果編譯鏈接過(guò)程中仍然發(fā)生編碼方面的錯(cuò)誤,可以右鍵點(diǎn)擊項(xiàng)目名稱,點(diǎn)擊“屬性”命令打開(kāi)項(xiàng)目屬性頁(yè),增加附加選項(xiàng)“/utf-8”,如下圖:

1.2、安裝QT VS Tools

1.3、安裝QT MSVC工具鏈
打開(kāi)Qt Maintenance Tool(Qt維護(hù)工具)

查看是否安裝了MSVC工具鏈,沒(méi)有的話勾選并安裝:

1.4、配置QT MSVC工具鏈路徑
上一步安裝的MSVC工具鏈路徑一般為“path/to/qtroot/version/msvc2022_64”,通過(guò)VS2022工具->選項(xiàng)打開(kāi)選項(xiàng)對(duì)話框,在Qt->versions配置項(xiàng)中添加相關(guān)路徑,并在系統(tǒng)環(huán)境變量中將“path/to/qtroot/version/msvc2022_64/bin”加入PATH環(huán)境變量。

2、創(chuàng)建項(xiàng)目與編碼
在VS2022中創(chuàng)建QT項(xiàng)目,如果是GUI程序,可以搜索并選擇“Qt Widgets Application”模板作為項(xiàng)目模板。
項(xiàng)目的編碼可以在VS2022中進(jìn)行,也可以在Qt Creator中進(jìn)行(它的窗體設(shè)計(jì)器比較方便)。如果在Qt Creator中編碼,完成后將有關(guān)文件添加進(jìn)VS2022的項(xiàng)目中即可。
在項(xiàng)目開(kāi)發(fā)過(guò)程中如果要觀察qDebug()輸出的調(diào)試信息,可以臨時(shí)將鏈接系統(tǒng)的子系統(tǒng)指定為控制臺(tái):

在開(kāi)發(fā)完成后正式編譯連接時(shí)再改回“窗口 (/SUBSYSTEM:WINDOWS)”。如果子系統(tǒng)仍然指定為“控制臺(tái) (/SUBSYSTEM:CONSOLE)”,生成的程序運(yùn)行時(shí)除了顯示程序窗體外,還將顯示一個(gè)控制臺(tái)窗口。
3、編譯
如果要用編譯后的結(jié)果進(jìn)行部署,采用Release(發(fā)布)配置進(jìn)行文件的編譯。編譯過(guò)程中如果因?yàn)榄h(huán)境變量未正確配置導(dǎo)致找不到include文件與鏈接庫(kù)引起編譯失敗,可以在項(xiàng)目屬性頁(yè)將相關(guān)目錄添加進(jìn)項(xiàng)目:


4、部署
上一步編譯所得的exe文件離開(kāi)開(kāi)發(fā)環(huán)境并不能獨(dú)立運(yùn)行,要使它能夠獨(dú)立運(yùn)行尚需進(jìn)行部署。安裝完QT Creator的MSVC工具鏈后,QT官方的適用于MSVC編譯器的部署工具就已安裝,路徑為1.4中要求加入PATH環(huán)境變量的“path/to/qtroot/version/msvc2022_64/bin”,文件名為“windeployqt.exe”和“windeployqt6.exe”,顧名思義,后者為支持QT6.*的部署工具。在任意位置創(chuàng)建一個(gè)文件夾作為部署文件夾(不要使用其中已包含文件的文件夾,可以使用已有的空文件夾),將編譯出的Release版exe文件拷貝到這個(gè)文件夾中,以管理員方式打開(kāi)終端,導(dǎo)航到此目錄下,執(zhí)行如下命令:
windeployqt6 --release --compiler-runtime application_name.exe
其中,application_name.exe是編譯所得的應(yīng)用程序文件名。這個(gè)命令執(zhí)行完成,部署也就完成了。我用相同的程序代碼實(shí)測(cè),minGW的部署版本(要用QT Creator默認(rèn)的minGW工具編譯,也要用minGW目錄下的windeployqt6部署)拷貝到?jīng)]有安裝QT的windows系統(tǒng)中執(zhí)行失敗,使用MSVC工具鏈制作的部署版本則運(yùn)行成功。
到此這篇關(guān)于使用VS2022開(kāi)發(fā)并部署QT應(yīng)用的文章就介紹到這了,更多相關(guān)VS2022開(kāi)發(fā)部署QT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)職工信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)職工信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
OpenCV使用稀疏光流實(shí)現(xiàn)視頻對(duì)象跟蹤的方法詳解
這篇文章主要為大家詳細(xì)介紹了OpenCV如何使用稀疏光流實(shí)現(xiàn)視頻對(duì)象跟蹤功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
C語(yǔ)言Turbo C下實(shí)現(xiàn)俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言Turbo C下寫(xiě)的俄羅斯方塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
static_cast,dynamic_cast,reinterpret_cast和const_cast的區(qū)別詳解
以下是對(duì)static_cast,dynamic_cast,reinterpret_cast和const_cast之間的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09
C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過(guò)本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

