vscode+qt+qmake開發(fā)環(huán)境搭建(最全最詳細(xì))
00. 前言
? 鑒于Qt官方IDE太過難用,VSCode+各種插件功能強(qiáng)大,遂采用VSCode來寫Qt項(xiàng)目。
01. 環(huán)境搭建
1. 需要安裝的軟件:
- VSCode,官方最新版就行
- Qt,版本隨意,本文主要針對較老版本使用Qmake構(gòu)建系統(tǒng)的項(xiàng)目
2. 環(huán)境變量:
Qt環(huán)境變量,需要配置Qt庫跟MinGW,盡量使用Qt安裝時自帶的MinGW

VSCode插件,下面C/C++插件是必需的沒意見吧


02. 開始配置
1. 創(chuàng)建項(xiàng)目項(xiàng)目
先用Qt Creator創(chuàng)建個Qmake項(xiàng)目,最簡單的空白窗口,項(xiàng)目結(jié)構(gòu)如下

2. 使用VSCode打開項(xiàng)目

3. 配置C/C++插件
VSCode快捷鍵ctrl+shift+p打開命令面板,輸入c++,選擇編輯配置

4. 編輯C/C++設(shè)置
編譯器路徑:下拉有得選就選你配置環(huán)境變量的Qt版本,沒有就自己復(fù)制路徑過來

IntelliSense 模式:選擇安裝的gcc的架構(gòu),我安裝的是64位Qt,上面自帶的gcc編譯器也是64位,就選擇windows-gcc-x64

頭文件路徑:這個主要是實(shí)現(xiàn)頭文件識別,要不然Qt的頭文件一直飄紅,也沒法自動跳轉(zhuǎn)頭文件,第一行是當(dāng)前像目錄下所有,第二行是安裝的Qt庫的頭文件路徑

剩下的配置按需配置,不配置也不影響。選擇編輯json可以查看C/C++插件json版本的配置

剛才配置的都在這里面了,現(xiàn)在引用Qt頭文件已經(jīng)不報錯了 c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Qt/5.15.2/mingw81_64/include/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "windows-gcc-x64",
"compilerPath": "C:/Qt/Tools/mingw810_64/bin/g++.exe"
}
],
"version": 4
}
5. 配置task.json
選擇終端-運(yùn)行任務(wù)-配置任務(wù)-使用模板創(chuàng)建task.json文件-Others;這一步無所謂,就是搞個模板,用我下面貼的一樣

配置編譯Qt項(xiàng)目的task,這一步其實(shí)是跟Qt Creator相同的,我們打開Qt Creator,選擇項(xiàng)目,查看剛才的項(xiàng)目的項(xiàng)目構(gòu)建配置

Qt Creator構(gòu)建步驟分析如下:
設(shè)置構(gòu)建目錄,也就是編譯出來的中間文件目錄
qmake,這一步其實(shí)是用qmake將.pro配置文件編譯成makefile,并且將其中涉及的.ui、.qrc等編譯成cpp,都在構(gòu)建目錄中,下面是切換Debug/Release時不同的qmake編譯命令
#Debug C:/Qt/5.15.2/mingw81_64/bin/qmake.exe D:\Code\Other\untitled\untitled.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" && C:/Qt/Tools/mingw810_64/bin/mingw32-make.exe qmake_all #Release C:/Qt/5.15.2/mingw81_64/bin/qmake.exe D:\Code\Other\untitled\untitled.pro -spec win32-g++ "CONFIG+=qml_debug" && C:/Qt/Tools/mingw810_64/bin/mingw32-make.exe qmake_all
make,真正的編譯cpp,MinGW使用的式mingw32-make.exe
mingw32-make.exe -j22 in D:\Code\Other\untitled\build
clean,這里使用還是mingw32-make.exe
mingw32-make.exe clean -j20 in D:\Code\Other\untitled\build
將上面Qt Creator構(gòu)建步驟轉(zhuǎn)換為task.json就行了,我把debug、relese全流程都加上了,非常簡單!
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
//在當(dāng)前項(xiàng)目目錄創(chuàng)建build文件夾
"label": "mkdir", //任務(wù)名稱
"type": "shell", //任務(wù)類型,定義任務(wù)是被作為進(jìn)程運(yùn)行還是在 shell 中作為命令運(yùn)行。
"options": {
"cwd": "${workspaceFolder}" //已執(zhí)行程序或腳本的當(dāng)前工作目錄,設(shè)置當(dāng)前項(xiàng)目文件夾
},
"command": "mkdir", //命令
"args": [ //命令后面跟的參數(shù)
"-Force",
"build"
]
},
{
"label": "qmake-debug",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/build" //進(jìn)入build目錄
},
"command": "qmake", //qmake命令,這里沒用完整路徑,是因?yàn)榕渲玫江h(huán)境變量了 C:/Qt/5.15.2/mingw81_64/bin/qmake.exe
"args": [ //跟的參數(shù)是不是很熟悉,就是上面分析出來的Qt Creator執(zhí)行流程
"../${workspaceFolderBasename}.pro", //在build目錄上一級哦
"-spec",
"win32-g++",
"\"CONFIG+=debug\"",
"\"CONFIG+=console\""
],
"dependsOn": [ //這是本條命令依賴的前置條件,就是上面創(chuàng)建build文件夾的task,直接執(zhí)行本task會自動先調(diào)用依賴的task
"mkdir" //其實(shí)可以手動執(zhí)行一次,后面不用每次都執(zhí)行創(chuàng)建目錄的操作
]
},
{
"label": "make-debug",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/build"
},
"command": "mingw32-make", //MinGW這個也配置在環(huán)境變量了,不用寫完整路徑了 C:/Qt/Tools/mingw810_64/bin/mingw32-make.exe
"args": [
"-f",
"Makefile.Debug", //-f 選擇makefile,這是qmake編譯出來的
"-j7" //這個參數(shù)都知道吧,編譯用的線程數(shù)量
],
"dependsOn": [
"qmake-debug"
]
},
{
"label": "run-debug",
"type": "process", //運(yùn)行就不能選擇shell執(zhí)行了,要選擇process
"options": {
"cwd": "${workspaceFolder}/build/debug" //沒在.pro配置DESTDIR,會生成到build目錄下面對應(yīng)目錄
},
"command": "${workspaceFolderBasename}.exe", //執(zhí)行的exe名字,一般當(dāng)前項(xiàng)目文件夾的名稱,自定義可以寫其他的
"dependsOn": [
"make-debug"
]
},
/
{
"label": "qmake-release",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/build"
},
"command": "qmake",
"args": [ //注意release跟debug參數(shù)的差異
"../${workspaceFolderBasename}.pro",
"-spec",
"win32-g++",
"\"CONFIG+=qtquickcompiler\""
],
"dependsOn": [
// "mkdir" //不用每次都創(chuàng)建吧
]
},
{
"label": "make-release",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/build"
},
"command": "mingw32-make",
"args": [
"-f",
"Makefile.Release", //注意release跟debug參數(shù)的差異
"-j7"
],
"dependsOn": [
"qmake-release"
]
},
{
"label": "run-release",
"type": "process",
"options": {
"cwd": "${workspaceFolder}/build/release"
},
"command": "${workspaceFolderBasename}.exe",
"dependsOn": [
"make-release"
]
},
{
"label": "clean",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/build"
},
"command": "mingw32-make",
"args": [
"clean"
]
}
]
}
既然配置好了,那就可以開心的運(yùn)行代碼,有兩種方式
終端-運(yùn)行任務(wù)-選擇任務(wù),我們配置的task都在里面了,選擇run-debug/run-release就行,因?yàn)榕渲眠^depend[],前面qmake、make都被一條龍調(diào)用

既然是VSCode,不用快捷鍵怎么可以,超級強(qiáng)大的ctrl+shift+p,輸入run,和手點(diǎn)流程一樣,回車,方向鍵選擇run-debug/run-release回車執(zhí)行就好了

一條龍調(diào)用的命令在控制臺就會有輸出了,exe啟動后log也會在這輸出

03. 配置斷點(diǎn)調(diào)試
? 上面配置的是以debug/release方式運(yùn)行程序,那么要打斷點(diǎn)調(diào)試怎么辦呢?
1.配置launch.json
側(cè)邊欄選擇調(diào)試,點(diǎn)擊創(chuàng)建launch.json文件

選擇c++就行,第一個第二個沒關(guān)系,反正生成的幾乎空白的模板

選擇創(chuàng)建配置,選擇gdb啟動作為基礎(chǔ)模板,來在上面修改

修改內(nèi)容如下,我放了自動生成的模板跟修改后的,可以對比看下修改了那些地方,實(shí)際使用記得刪除哈
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 啟動", //模板,實(shí)際使用記得刪除
"type": "cppdbg",
"request": "launch",
"program": "輸入程序名稱,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "為 gdb 啟用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "將反匯編風(fēng)格設(shè)置為 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "debug", //修改后
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/debug/${workspaceFolderBasename}.exe", //寫完整路徑
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}", //工作目錄,項(xiàng)目根目錄
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:/Qt/Tools/mingw810_64/bin/gdb.exe", //選擇MinGW中的gdb
"setupCommands": [
{
"description": "為 gdb 啟用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "make-debug", //這跟depend[]很像啊,make就行了,用make編譯出exe
}
]
}
2. 運(yùn)行調(diào)試
重新打開調(diào)試,剛才配置的調(diào)試配置已經(jīng)存在了

打個斷點(diǎn),點(diǎn)擊綠色三角,運(yùn)行下看看效果

04. 運(yùn)行效果
run-debug及自動生成的目錄結(jié)構(gòu)、控制臺log,ctrl+c結(jié)束程序

run-release

debug斷點(diǎn)調(diào)試

到此這篇關(guān)于vscode+qt+qmake開發(fā)環(huán)境搭建(最全最詳細(xì))的文章就介紹到這了,更多相關(guān)vscode qt qmake環(huán)境搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
基于QT編寫一個網(wǎng)絡(luò)調(diào)試助手
這篇文章主要為大家詳細(xì)介紹了如何基于QT編寫一個簡單的網(wǎng)絡(luò)調(diào)試助手,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起休閑游戲2025-07-07

