欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年08月08日 09:44:19   作者:witton  
這篇文章主要介紹了Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序,以實(shí)例來簡單介紹一下VS2022中如何使用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++??復(fù)制消除問題解決示例詳析

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

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

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

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

    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-08
  • C++容器map和pair對組實(shí)例詳解

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

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

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

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

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

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

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

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

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

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

    C語言撲克牌游戲示例

    大家好,本篇文章主要講的是C語言撲克牌游戲示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    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

最新評論