vscode+qt+qmake開發(fā)環(huán)境搭建(最全最詳細(xì))
00. 前言
? 鑒于Qt官方IDE太過難用,VSCode+各種插件功能強大,遂采用VSCode來寫Qt項目。
01. 環(huán)境搭建
1. 需要安裝的軟件:
- VSCode,官方最新版就行
- Qt,版本隨意,本文主要針對較老版本使用Qmake構(gòu)建系統(tǒng)的項目
2. 環(huán)境變量:
Qt環(huán)境變量,需要配置Qt庫跟MinGW,盡量使用Qt安裝時自帶的MinGW
VSCode插件,下面C/C++插件是必需的沒意見吧
02. 開始配置
1. 創(chuàng)建項目項目
先用Qt Creator創(chuàng)建個Qmake項目,最簡單的空白窗口,項目結(jié)構(gòu)如下
2. 使用VSCode打開項目
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
頭文件路徑:這個主要是實現(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
選擇終端-運行任務(wù)-配置任務(wù)-使用模板創(chuàng)建task.json文件-Others;這一步無所謂,就是搞個模板,用我下面貼的一樣
配置編譯Qt項目的task,這一步其實是跟Qt Creator相同的,我們打開Qt Creator,選擇項目,查看剛才的項目的項目構(gòu)建配置
Qt Creator構(gòu)建步驟分析如下:
設(shè)置構(gòu)建目錄,也就是編譯出來的中間文件目錄
qmake
,這一步其實是用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)前項目目錄創(chuàng)建build文件夾 "label": "mkdir", //任務(wù)名稱 "type": "shell", //任務(wù)類型,定義任務(wù)是被作為進(jìn)程運行還是在 shell 中作為命令運行。 "options": { "cwd": "${workspaceFolder}" //已執(zhí)行程序或腳本的當(dāng)前工作目錄,設(shè)置當(dāng)前項目文件夾 }, "command": "mkdir", //命令 "args": [ //命令后面跟的參數(shù) "-Force", "build" ] }, { "label": "qmake-debug", "type": "shell", "options": { "cwd": "${workspaceFolder}/build" //進(jìn)入build目錄 }, "command": "qmake", //qmake命令,這里沒用完整路徑,是因為配置到環(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" //其實可以手動執(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", //運行就不能選擇shell執(zhí)行了,要選擇process "options": { "cwd": "${workspaceFolder}/build/debug" //沒在.pro配置DESTDIR,會生成到build目錄下面對應(yīng)目錄 }, "command": "${workspaceFolderBasename}.exe", //執(zhí)行的exe名字,一般當(dā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" ] } ] }
既然配置好了,那就可以開心的運行代碼,有兩種方式
終端-運行任務(wù)-選擇任務(wù),我們配置的task都在里面了,選擇run-debug/run-release
就行,因為配置過depend[]
,前面qmake、make都被一條龍調(diào)用
既然是VSCode,不用快捷鍵怎么可以,超級強大的ctrl+shift+p
,輸入run
,和手點流程一樣,回車,方向鍵選擇run-debug/run-release
回車執(zhí)行就好了
一條龍調(diào)用的命令在控制臺就會有輸出了,exe啟動后log
也會在這輸出
03. 配置斷點調(diào)試
? 上面配置的是以debug/release
方式運行程序,那么要打斷點調(diào)試怎么辦呢?
1.配置launch.json
側(cè)邊欄選擇調(diào)試,點擊創(chuàng)建launch.json
文件
選擇c++就行,第一個第二個沒關(guān)系,反正生成的幾乎空白的模板
選擇創(chuàng)建配置,選擇gdb啟動作為基礎(chǔ)模板,來在上面修改
修改內(nèi)容如下,我放了自動生成的模板跟修改后的,可以對比看下修改了那些地方,實際使用記得刪除哈
{ // 使用 IntelliSense 了解相關(guān)屬性。 // 懸停以查看現(xiàn)有屬性的描述。 // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 啟動", //模板,實際使用記得刪除 "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}", //工作目錄,項目根目錄 "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. 運行調(diào)試
重新打開調(diào)試,剛才配置的調(diào)試配置已經(jīng)存在了
打個斷點,點擊綠色三角,運行下看看效果
04. 運行效果
run-debug
及自動生成的目錄結(jié)構(gòu)、控制臺log,ctrl+c結(jié)束程序
run-release
debug斷點調(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)文章
C++中的string庫函數(shù)常見函數(shù)的作用和使用方法
這篇文章主要介紹了C++中的string庫函數(shù)常見函數(shù)的作用和使用方法,庫函數(shù)的靈活應(yīng)用是程序員的一大重要技能,本文通過實例實例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2022-04-04C語言進(jìn)階輸入輸出重定向與fopen函數(shù)使用示例詳解
這篇文章主要為大家介紹了C語言進(jìn)階輸入輸出重定向與fopen函數(shù)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例的相關(guān)資料,需要的朋友可以參考下2017-06-06QT實現(xiàn)二、八、十六進(jìn)制之間的轉(zhuǎn)換
本文主要介紹了QT實現(xiàn)二、八、十六進(jìn)制之間的轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C++詳細(xì)講解模擬實現(xiàn)位圖和布隆過濾器的方法
位圖(bitset)是一種常用的數(shù)據(jù)結(jié)構(gòu),常用在給一個很大范圍的數(shù),判斷其中的一個數(shù)是不是在其中。在索引、數(shù)據(jù)壓縮方面有很大的應(yīng)用。布隆過濾器是由布隆提出的,它實際上是一個很長的二進(jìn)制向量和一系列隨機映射函數(shù)。布隆過濾器可以用于檢索一個元素是否在一個集合中2022-06-06