Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序的圖文教程
Visual Studio的新版本已經(jīng)可以像VSCode一樣創(chuàng)建CMake項(xiàng)目了,但是默認(rèn)的情況下是使用的Visual Studio編譯器及調(diào)試器不包括MinGW中的工具集,參見下面的默認(rèn)可選工具集:
本文就以實(shí)例來簡單介紹一下VS2022中如何使用MinGW來編譯、調(diào)試C/C++程序。
一、創(chuàng)建項(xiàng)目
首先,創(chuàng)建一個新項(xiàng)目:
然后,選擇CMake項(xiàng)目:
填寫項(xiàng)目名稱,比如test
項(xiàng)目創(chuàng)建好后如下所示,由于筆者并未安裝VS的Windows C/C++開發(fā)工具,也就沒有VS的C/C++編譯、調(diào)試器,所以會報錯。
二、配置CMake
在VS2022中CMake的配置有兩個文件,一個是“CMakePresets.json”,另一個是“CMakeSettings.json”,在VS的“工具”/“選項(xiàng)”/“CMake”/“常規(guī)”中可以進(jìn)行設(shè)置使用哪個文件來進(jìn)行CMake配置,如下圖所示:
默認(rèn)是如果有“CMakePresets.json”則使用“CMakePresets.json”,否則使用“CMakeSettings.json”。
下面就分別介紹如何使用這兩個文件來配置CMake,二選一即可。
1.修改“CMakePresets.json”預(yù)設(shè)編譯工具集
新建項(xiàng)目后,默認(rèn)是生成了“CMakePresets.json”,打開“CMakePresets.json”,可以看到默認(rèn)的編譯是cl.exe
為了使用MinGW中編譯器,將之改為gcc.exe和g++.exe(必須在PATH路徑中可以找到),如下圖所示:
此時即可正常編譯了:
但是此時的智能感知識別并未正常工作,無法跳轉(zhuǎn)到定義,此時需要設(shè)置智能感知模式(intelliSenseMode),打開“CMakePresets.json”,在cacheVariables后添加:
"vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "intelliSenseMode": "linux-gcc-x86" } }
即:
"cacheVariables": { "CMAKE_C_COMPILER": "gcc.exe", "CMAKE_CXX_COMPILER": "g++.exe" }, "vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "intelliSenseMode": "linux-gcc-x86" } },
如果是64位程序,則將"linux-gcc-x86"改為"linux-gcc-x64"。
2.使用CMake設(shè)置編輯器來配置CMake
新建的項(xiàng)目,默認(rèn)是生成的“CMakePresets.json”預(yù)設(shè)文件,先將之刪除掉或者在VS選項(xiàng)中設(shè)置CMake為“從不使用CMakePresets.json”,然后在項(xiàng)目中選擇“test的CMake設(shè)置”,此時項(xiàng)目中會創(chuàng)建一個CMakeSettings.json的文件
雙擊即可打開CMake的設(shè)置編輯器,如下圖所示:
此時工具集中是默認(rèn)可用的工具集,可以看到并沒有MinGW。點(diǎn)擊右邊的“編輯JSON”,即可看到JSON格式的配置文件:
刪除"inheritEnvironments"所在行,并添加:
"variables": [ { "name": "CMAKE_C_COMPILER", "value": "gcc", "type": "FILEPATH" }, { "name": "CMAKE_CXX_COMPILER", "value": "g++", "type": "FILEPATH" } ], "intelliSenseMode": "linux-gcc-x64"
或者直接在配置中選中“x64-Debug"刪除掉
然后再添加MinGW配置
此時工具集中可以看到MinGW了:
在下面的CMake變量中可以看到重新定義了CMAKE_C_COMPILER和CMAKE_CXX_COMPILER變量:
如果沒有定義env.BIN_ROOT
變量則會找不到gcc和g++,可以直接使用PATH變量,所以把CMAKE_C_COMPILER改為gcc,CMAKE_CXX_COMPILER改為g++即可:
強(qiáng)烈推薦使用此方式來設(shè)置為MinGW,它會自動設(shè)置intelliSenseMode為"linux-gcc-x64":
不管是使用CMake的預(yù)設(shè)文件“CMakePresets.json”還是“CMakeSettings.json”都只是設(shè)置了編譯器為MinGW中的gcc/g++,目前只能編譯,不能使用gdb調(diào)試。
三、配置調(diào)試
想要調(diào)試,需要做如下設(shè)置,在“解決方案資源管理器”中的CMakeLists.txt文件上右鍵,在彈出的菜單中選擇“添加調(diào)試配置”,如下圖所示:
然后在彈出的“選擇調(diào)試程序”對話框中選擇“MinGW/Cygin(gdb)的C/C++啟動”,如下圖所示:
此時會創(chuàng)建一個launch.vs.json文件,如下圖所示:
將"projectTarget"設(shè)置為編譯的exe文件,這里為test.exe;把"miDebuggerPath"設(shè)置成"gdb.exe"(要求gdb.exe在PATH路徑中);將gdb的反匯編格式設(shè)置為intel格式,如下所示:
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "cppdbg", "name": "CMakeLists.txt", "project": "CMakeLists.txt", "projectTarget": "test.exe", "cwd": "${workspaceRoot}", "program": "${debugInfo.target}", "MIMode": "gdb", "miDebuggerPath": "gdb.exe", "externalConsole": true, "setupCommands": [ { "description": "為 gdb 啟用整齊打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "將反匯編風(fēng)格設(shè)置為 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }
再把調(diào)試目標(biāo)設(shè)置為“CMakeLists.txt”,
此時我們直接按F5鍵即可進(jìn)行調(diào)試:
至此就可以暢快地在Visual Studio中使用MinGW開發(fā)調(diào)試C/C++程序了。
到此這篇關(guān)于Visual Studio 2022使用MinGW來編譯調(diào)試C/C++程序的文章就介紹到這了,更多相關(guān)Visual Studio 2022調(diào)試C/C++程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++實(shí)現(xiàn)動態(tài)數(shù)組的示例詳解
動態(tài)數(shù)組相比于靜態(tài)數(shù)組具有更大的靈活性,因?yàn)槠浯笮】梢栽谶\(yùn)行時根據(jù)程序的需要動態(tài)地進(jìn)行分配和調(diào)整,本文為大家介紹了C++實(shí)現(xiàn)動態(tài)數(shù)組的方法,需要的可以參考下2023-08-08C語言的數(shù)據(jù)結(jié)構(gòu)之樹、森連、二叉樹之間的轉(zhuǎn)換圖解
這篇文章主要介紹了C語言的數(shù)據(jù)結(jié)構(gòu)之樹、森連、二叉樹之間的轉(zhuǎn)換詳解,數(shù)據(jù)是信息的載體,是描述客觀事物屬性的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中并被程序識別和處理的符號的集合,需要的朋友可以參考下2023-07-07基于C++實(shí)現(xiàn)的各種內(nèi)部排序算法匯總
這篇文章主要介紹了基于C++實(shí)現(xiàn)的各種內(nèi)部排序算法,非常經(jīng)典,需要的朋友可以參考下2014-08-08