亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Visual?Studio?2022使用MinGW來(lái)編譯調(diào)試C/C++程序的圖文教程

 更新時(shí)間:2022年08月08日 09:44:19   作者:witton  
這篇文章主要介紹了Visual?Studio?2022使用MinGW來(lái)編譯調(diào)試C/C++程序,以實(shí)例來(lái)簡(jiǎn)單介紹一下VS2022中如何使用MinGW來(lái)編譯、調(diào)試C/C++程序,需要的朋友可以參考下

Visual Studio的新版本已經(jīng)可以像VSCode一樣創(chuàng)建CMake項(xiàng)目了,但是默認(rèn)的情況下是使用的Visual Studio編譯器及調(diào)試器不包括MinGW中的工具集,參見(jiàn)下面的默認(rèn)可選工具集:

本文就以實(shí)例來(lái)簡(jiǎn)單介紹一下VS2022中如何使用MinGW來(lái)編譯、調(diào)試C/C++程序。

一、創(chuàng)建項(xiàng)目

首先,創(chuàng)建一個(gè)新項(xiàng)目:

然后,選擇CMake項(xiàng)目:

填寫(xiě)項(xiàng)目名稱(chēng),比如test

項(xiàng)目創(chuàng)建好后如下所示,由于筆者并未安裝VS的Windows C/C++開(kāi)發(fā)工具,也就沒(méi)有VS的C/C++編譯、調(diào)試器,所以會(huì)報(bào)錯(cuò)。

二、配置CMake

在VS2022中CMake的配置有兩個(gè)文件,一個(gè)是“CMakePresets.json”,另一個(gè)是“CMakeSettings.json”,在VS的“工具”/“選項(xiàng)”/“CMake”/“常規(guī)”中可以進(jìn)行設(shè)置使用哪個(gè)文件來(lái)進(jìn)行CMake配置,如下圖所示:

默認(rèn)是如果有“CMakePresets.json”則使用“CMakePresets.json”,否則使用“CMakeSettings.json”。
下面就分別介紹如何使用這兩個(gè)文件來(lái)配置CMake,二選一即可。

1.修改“CMakePresets.json”預(yù)設(shè)編譯工具集

新建項(xiàng)目后,默認(rèn)是生成了“CMakePresets.json”,打開(kāi)“CMakePresets.json”,可以看到默認(rèn)的編譯是cl.exe

為了使用MinGW中編譯器,將之改為gcc.exe和g++.exe(必須在PATH路徑中可以找到),如下圖所示:

此時(shí)即可正常編譯了:

但是此時(shí)的智能感知識(shí)別并未正常工作,無(wú)法跳轉(zhuǎn)到定義,此時(shí)需要設(shè)置智能感知模式(intelliSenseMode),打開(kāi)“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è)置編輯器來(lái)配置CMake

新建的項(xiàng)目,默認(rèn)是生成的“CMakePresets.json”預(yù)設(shè)文件,先將之刪除掉或者在VS選項(xiàng)中設(shè)置CMake為“從不使用CMakePresets.json”,然后在項(xiàng)目中選擇“test的CMake設(shè)置”,此時(shí)項(xiàng)目中會(huì)創(chuàng)建一個(gè)CMakeSettings.json的文件

雙擊即可打開(kāi)CMake的設(shè)置編輯器,如下圖所示:

此時(shí)工具集中是默認(rèn)可用的工具集,可以看到并沒(méi)有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配置

此時(shí)工具集中可以看到MinGW了:

在下面的CMake變量中可以看到重新定義了CMAKE_C_COMPILER和CMAKE_CXX_COMPILER變量:

如果沒(méi)有定義env.BIN_ROOT變量則會(huì)找不到gcc和g++,可以直接使用PATH變量,所以把CMAKE_C_COMPILER改為gcc,CMAKE_CXX_COMPILER改為g++即可:

強(qiáng)烈推薦使用此方式來(lái)設(shè)置為MinGW,它會(huì)自動(dòng)設(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)試程序”對(duì)話框中選擇“MinGW/Cygin(gdb)的C/C++啟動(dòng)”,如下圖所示:

此時(shí)會(huì)創(chuàng)建一個(gè)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”,

此時(shí)我們直接按F5鍵即可進(jìn)行調(diào)試:

至此就可以暢快地在Visual Studio中使用MinGW開(kāi)發(fā)調(diào)試C/C++程序了。

到此這篇關(guān)于Visual Studio 2022使用MinGW來(lái)編譯調(diào)試C/C++程序的文章就介紹到這了,更多相關(guān)Visual Studio 2022調(diào)試C/C++程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++??復(fù)制消除問(wèn)題解決示例詳析

    c++??復(fù)制消除問(wèn)題解決示例詳析

    這篇文章主要為大家介紹了c++??復(fù)制消除問(wèn)題解決示例詳析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • VsCode配置C++/Cmake的步驟詳解

    VsCode配置C++/Cmake的步驟詳解

    本文分步驟給大家介紹VsCode配置C++/Cmake的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • C/C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例詳解

    C/C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例詳解

    動(dòng)態(tài)數(shù)組相比于靜態(tài)數(shù)組具有更大的靈活性,因?yàn)槠浯笮】梢栽谶\(yùn)行時(shí)根據(jù)程序的需要?jiǎng)討B(tài)地進(jìn)行分配和調(diào)整,本文為大家介紹了C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的方法,需要的可以參考下
    2023-08-08
  • C++容器map和pair對(duì)組實(shí)例詳解

    C++容器map和pair對(duì)組實(shí)例詳解

    pair?是一種模板類(lèi),允許將兩個(gè)不同類(lèi)型的值組合在一起,它由兩個(gè)數(shù)據(jù)成員first和second組成,分別用來(lái)保存這兩個(gè)值,這篇文章主要介紹了C++容器——map和pair對(duì)組,需要的朋友可以參考下
    2024-05-05
  • C語(yǔ)言?柔性數(shù)組的使用詳解

    C語(yǔ)言?柔性數(shù)組的使用詳解

    柔性數(shù)組(Flexible?Array)是引入的一個(gè)新特性,它允許你在定義結(jié)構(gòu)體時(shí)創(chuàng)建一個(gè)空數(shù)組,而這個(gè)數(shù)組的大小可以在程序運(yùn)行的過(guò)程中根據(jù)你的需求進(jìn)行更改特別注意的一點(diǎn)是:這個(gè)空數(shù)組必須聲明為結(jié)構(gòu)體的最后一個(gè)成員,并且還要求這樣的結(jié)構(gòu)體至少包含一個(gè)其他類(lèi)型的成員
    2022-03-03
  • C++基于人工智能搜索策略解決農(nóng)夫過(guò)河問(wèn)題示例

    C++基于人工智能搜索策略解決農(nóng)夫過(guò)河問(wèn)題示例

    這篇文章主要介紹了C++基于人工智能搜索策略解決農(nóng)夫過(guò)河問(wèn)題,簡(jiǎn)單描述了農(nóng)夫過(guò)河問(wèn)題的概念、實(shí)現(xiàn)原理并結(jié)合具體實(shí)例形式給出了C++使用人工智能搜索策略解決農(nóng)夫過(guò)河問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • C語(yǔ)言每日練習(xí)之字符串反轉(zhuǎn)

    C語(yǔ)言每日練習(xí)之字符串反轉(zhuǎn)

    這篇文章主要介紹了C語(yǔ)言字符串反轉(zhuǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)之樹(shù)、森連、二叉樹(shù)之間的轉(zhuǎn)換圖解

    C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)之樹(shù)、森連、二叉樹(shù)之間的轉(zhuǎn)換圖解

    這篇文章主要介紹了C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)之樹(shù)、森連、二叉樹(shù)之間的轉(zhuǎn)換詳解,數(shù)據(jù)是信息的載體,是描述客觀事物屬性的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中并被程序識(shí)別和處理的符號(hào)的集合,需要的朋友可以參考下
    2023-07-07
  • C語(yǔ)言撲克牌游戲示例

    C語(yǔ)言撲克牌游戲示例

    大家好,本篇文章主要講的是C語(yǔ)言撲克牌游戲示例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于C++實(shí)現(xiàn)的各種內(nèi)部排序算法匯總

    基于C++實(shí)現(xiàn)的各種內(nèi)部排序算法匯總

    這篇文章主要介紹了基于C++實(shí)現(xiàn)的各種內(nèi)部排序算法,非常經(jīng)典,需要的朋友可以參考下
    2014-08-08

最新評(píng)論