vscode+qt+qmake開(kāi)發(fā)環(huán)境搭建(最全最詳細(xì))
00. 前言
? 鑒于Qt官方IDE太過(guò)難用,VSCode+各種插件功能強(qiáng)大,遂采用VSCode來(lái)寫(xiě)Qt項(xiàng)目。
01. 環(huán)境搭建
1. 需要安裝的軟件:
- VSCode,官方最新版就行
- Qt,版本隨意,本文主要針對(duì)較老版本使用Qmake構(gòu)建系統(tǒng)的項(xiàng)目
2. 環(huán)境變量:
Qt環(huán)境變量,需要配置Qt庫(kù)跟MinGW,盡量使用Qt安裝時(shí)自帶的MinGW
VSCode插件,下面C/C++插件是必需的沒(méi)意見(jiàn)吧
02. 開(kāi)始配置
1. 創(chuàng)建項(xiàng)目項(xiàng)目
先用Qt Creator創(chuàng)建個(gè)Qmake項(xiàng)目,最簡(jiǎn)單的空白窗口,項(xiàng)目結(jié)構(gòu)如下
2. 使用VSCode打開(kāi)項(xiàng)目
3. 配置C/C++插件
VSCode快捷鍵ctrl+shift+p
打開(kāi)命令面板,輸入c++
,選擇編輯配置
4. 編輯C/C++設(shè)置
編譯器路徑:下拉有得選就選你配置環(huán)境變量的Qt版本,沒(méi)有就自己復(fù)制路徑過(guò)來(lái)
IntelliSense 模式:選擇安裝的gcc的架構(gòu),我安裝的是64位Qt,上面自帶的gcc編譯器也是64位,就選擇windows-gcc-x64
頭文件路徑:這個(gè)主要是實(shí)現(xiàn)頭文件識(shí)別,要不然Qt的頭文件一直飄紅,也沒(méi)法自動(dòng)跳轉(zhuǎn)頭文件,第一行是當(dāng)前像目錄下所有,第二行是安裝的Qt庫(kù)的頭文件路徑
剩下的配置按需配置,不配置也不影響。選擇編輯json可以查看C/C++插件json版本的配置
剛才配置的都在這里面了,現(xiàn)在引用Qt頭文件已經(jīng)不報(bào)錯(cuò)了 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;這一步無(wú)所謂,就是搞個(gè)模板,用我下面貼的一樣
配置編譯Qt項(xiàng)目的task,這一步其實(shí)是跟Qt Creator相同的,我們打開(kāi)Qt Creator,選擇項(xiàng)目,查看剛才的項(xiàng)目的項(xiàng)目構(gòu)建配置
Qt Creator構(gòu)建步驟分析如下:
設(shè)置構(gòu)建目錄,也就是編譯出來(lái)的中間文件目錄
qmake
,這一步其實(shí)是用qmake
將.pro
配置文件編譯成makefile
,并且將其中涉及的.ui、.qrc等編譯成cpp,都在構(gòu)建目錄中,下面是切換Debug/Release時(shí)不同的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全流程都加上了,非常簡(jiǎn)單!
{ // 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命令,這里沒(méi)用完整路徑,是因?yàn)榕渲玫江h(huán)境變量了 C:/Qt/5.15.2/mingw81_64/bin/qmake.exe "args": [ //跟的參數(shù)是不是很熟悉,就是上面分析出來(lái)的Qt Creator執(zhí)行流程 "../${workspaceFolderBasename}.pro", //在build目錄上一級(jí)哦 "-spec", "win32-g++", "\"CONFIG+=debug\"", "\"CONFIG+=console\"" ], "dependsOn": [ //這是本條命令依賴的前置條件,就是上面創(chuàng)建build文件夾的task,直接執(zhí)行本task會(huì)自動(dòng)先調(diào)用依賴的task "mkdir" //其實(shí)可以手動(dòng)執(zhí)行一次,后面不用每次都執(zhí)行創(chuàng)建目錄的操作 ] }, { "label": "make-debug", "type": "shell", "options": { "cwd": "${workspaceFolder}/build" }, "command": "mingw32-make", //MinGW這個(gè)也配置在環(huán)境變量了,不用寫(xiě)完整路徑了 C:/Qt/Tools/mingw810_64/bin/mingw32-make.exe "args": [ "-f", "Makefile.Debug", //-f 選擇makefile,這是qmake編譯出來(lái)的 "-j7" //這個(gè)參數(shù)都知道吧,編譯用的線程數(shù)量 ], "dependsOn": [ "qmake-debug" ] }, { "label": "run-debug", "type": "process", //運(yùn)行就不能選擇shell執(zhí)行了,要選擇process "options": { "cwd": "${workspaceFolder}/build/debug" //沒(méi)在.pro配置DESTDIR,會(huì)生成到build目錄下面對(duì)應(yīng)目錄 }, "command": "${workspaceFolderBasename}.exe", //執(zhí)行的exe名字,一般當(dāng)前項(xiàng)目文件夾的名稱,自定義可以寫(xiě)其他的 "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" ] } ] }
既然配置好了,那就可以開(kāi)心的運(yùn)行代碼,有兩種方式
終端-運(yùn)行任務(wù)-選擇任務(wù),我們配置的task都在里面了,選擇run-debug/run-release
就行,因?yàn)榕渲眠^(guò)depend[]
,前面qmake、make都被一條龍調(diào)用
既然是VSCode,不用快捷鍵怎么可以,超級(jí)強(qiáng)大的ctrl+shift+p
,輸入run
,和手點(diǎn)流程一樣,回車,方向鍵選擇run-debug/run-release
回車執(zhí)行就好了
一條龍調(diào)用的命令在控制臺(tái)就會(huì)有輸出了,exe啟動(dòng)后log
也會(huì)在這輸出
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++就行,第一個(gè)第二個(gè)沒(méi)關(guān)系,反正生成的幾乎空白的模板
選擇創(chuàng)建配置,選擇gdb啟動(dòng)作為基礎(chǔ)模板,來(lái)在上面修改
修改內(nèi)容如下,我放了自動(dòng)生成的模板跟修改后的,可以對(duì)比看下修改了那些地方,實(shí)際使用記得刪除哈
{ // 使用 IntelliSense 了解相關(guān)屬性。 // 懸停以查看現(xiàn)有屬性的描述。 // 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 啟動(dòng)", //模板,實(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", //寫(xiě)完整路徑 "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)試
重新打開(kāi)調(diào)試,剛才配置的調(diào)試配置已經(jīng)存在了
打個(gè)斷點(diǎn),點(diǎn)擊綠色三角,運(yùn)行下看看效果
04. 運(yùn)行效果
run-debug
及自動(dòng)生成的目錄結(jié)構(gòu)、控制臺(tái)log,ctrl+c結(jié)束程序
run-release
debug斷點(diǎn)調(diào)試
到此這篇關(guān)于vscode+qt+qmake開(kāi)發(fā)環(huán)境搭建(最全最詳細(xì))的文章就介紹到這了,更多相關(guān)vscode qt qmake環(huán)境搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè)
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01C語(yǔ)言利用EasyX實(shí)現(xiàn)繪制足球圖案
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何利用EasyX繪圖庫(kù)實(shí)現(xiàn)繪制一個(gè)簡(jiǎn)單的足球圖案,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11基于QT編寫(xiě)一個(gè)網(wǎng)絡(luò)調(diào)試助手
這篇文章主要為大家詳細(xì)介紹了如何基于QT編寫(xiě)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)調(diào)試助手,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起休閑游戲2025-07-07