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

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

1.2、安裝QT VS Tools

1.3、安裝QT MSVC工具鏈
打開Qt Maintenance Tool(Qt維護工具)

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

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

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

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


4、部署
上一步編譯所得的exe文件離開開發(fā)環(huá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)建一個文件夾作為部署文件夾(不要使用其中已包含文件的文件夾,可以使用已有的空文件夾),將編譯出的Release版exe文件拷貝到這個文件夾中,以管理員方式打開終端,導(dǎo)航到此目錄下,執(zhí)行如下命令:
windeployqt6 --release --compiler-runtime application_name.exe
其中,application_name.exe是編譯所得的應(yīng)用程序文件名。這個命令執(zhí)行完成,部署也就完成了。我用相同的程序代碼實測,minGW的部署版本(要用QT Creator默認的minGW工具編譯,也要用minGW目錄下的windeployqt6部署)拷貝到?jīng)]有安裝QT的windows系統(tǒng)中執(zhí)行失敗,使用MSVC工具鏈制作的部署版本則運行成功。
到此這篇關(guān)于使用VS2022開發(fā)并部署QT應(yīng)用的文章就介紹到這了,更多相關(guān)VS2022開發(fā)部署QT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenCV使用稀疏光流實現(xiàn)視頻對象跟蹤的方法詳解
這篇文章主要為大家詳細介紹了OpenCV如何使用稀疏光流實現(xiàn)視頻對象跟蹤功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02
static_cast,dynamic_cast,reinterpret_cast和const_cast的區(qū)別詳解
以下是對static_cast,dynamic_cast,reinterpret_cast和const_cast之間的區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下2013-09-09
C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

