VScode-配置C/C++環(huán)境

VScode-配置C/C++環(huán)境

8NF6Et.png

準(zhǔn)備工作

下載并安裝相應(yīng)軟件

C/C++
  • 下載 VScode 最新版,第一次使用 VS Code 時(shí)你應(yīng)該知道的一切配置光戈,按照這篇文章安裝相應(yīng)插件
  • 下載并安裝 MingW-64,驗(yàn)證是否安裝好 MingW,驗(yàn)證方式:
    命令行 cmd暇仲,輸入g++ -v,``gcc -v副渴,gdb -v若輸出一大段信息奈附,則說(shuō)明安裝成功(此處不詳述,自行百度)

添加 MingW 環(huán)境變量

  • 環(huán)境變量
  1. windows 環(huán)境下煮剧,右鍵點(diǎn)擊此電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置 -> 高級(jí) -> 環(huán)境變量打開如下圖所示窗口
  2. 點(diǎn)擊新建添加一個(gè)環(huán)境變量斥滤,點(diǎn)擊編輯修改一個(gè)環(huán)境變量,變量名和變量值設(shè)置時(shí)勉盅,不要含有空格佑颇,也不要使用中文,多個(gè)路徑之間使用; 分隔草娜。通常情況下用戶變量一經(jīng)修改后會(huì)立即生效挑胸,而系統(tǒng)變量需要重啟電腦后才能生效,對(duì)于正在運(yùn)行的程序需要關(guān)閉后再重新運(yùn)行宰闰,新設(shè)置才能生效
  • 添加 MingW 環(huán)境變量

Mingw所在的bin文件夾添加到環(huán)境變量的path中去茬贵,比如我將 Mingw 下載到了 E 盤,添加環(huán)境變量示例如下:

添加環(huán)境變量

工作空間設(shè)置移袍,只針對(duì)當(dāng)前項(xiàng)目有效解藻。比如說(shuō)我們可以在這里面要求當(dāng)前項(xiàng)目的代碼統(tǒng)一使用制表符,而不需要要求每一個(gè)團(tuán)隊(duì)成員去修改各自的配置文件葡盗。

  • 驗(yàn)證

MinGW 安裝并導(dǎo)入文件后螟左,其中包含了 C 與 C++這兩個(gè)編譯環(huán)境,操作:win + R ,輸入cmd進(jìn)入命令行模式觅够,輸入gcc --hg++ --h,(h 前面有兩個(gè) - )具體操作如下:如未出現(xiàn)路狮,可以嘗試重啟電腦;

驗(yàn)證

vscode 全局變量

  • {workspaceRoot} VS Code 當(dāng)前打開的文件夾
    • ${file} 當(dāng)前打開的文件
    • ${relativeFile} 相對(duì)于 workspaceRoot 的相對(duì)路徑
    • ${fileBasename} 當(dāng)前打開文件的文件名
    • ${fileDirname} 所在的文件夾蔚约,是絕對(duì)路徑
    • ${fileExtname} 當(dāng)前打開文件的拓展名奄妨,如.json
    • ${cwd} the task runner's current working directory on startup

.vscode文件夾的作用

在項(xiàng)目的根目錄下新建一個(gè)vscode文件夾,說(shuō)明這個(gè)文件夾代表的是當(dāng)前項(xiàng)目的配置

工作空間設(shè)置苹祟,只針對(duì)當(dāng)前項(xiàng)目有效砸抛。比如說(shuō)我們可以在這里面要求當(dāng)前項(xiàng)目的代碼統(tǒng)一使用制表符评雌,而不需要要求每一個(gè)團(tuán)隊(duì)成員去修改各自的配置文件。

lunch.json

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch", // 配置名稱直焙,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
      "type": "cppdbg", // 配置類型景东,cppdbg對(duì)應(yīng)cpptools提供的調(diào)試功能;可以認(rèn)為此處只能是cppdbg
      "request": "launch", // 請(qǐng)求配置類型奔誓,可以為launch(啟動(dòng))或attach(附加)
      "program": "${fileDirname}/${fileBasenameNoExtension}.o", // 將要進(jìn)行調(diào)試的程序的路徑
      "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù)斤吐,一般設(shè)為空即可
      "stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔帲喈?dāng)于在main上打斷點(diǎn)
      "cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄厨喂,此為工作區(qū)文件夾和措;改成${fileDirname}可變?yōu)槲募谀夸?      "environment": [], // 環(huán)境變量
      "externalConsole": false, // 為true時(shí)使用單獨(dú)的cmd窗口,與其它IDE一致蜕煌;18年10月后設(shè)為false可調(diào)用VSC內(nèi)置終端
      "MIMode": "gdb", // 指定連接的調(diào)試器派阱,可以為gdb或lldb。
      "setupCommands": [
        // 模板自帶斜纪,好像可以更好地顯示STL容器的內(nèi)容贫母,具體作用自行Google
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "build",
      "windows": {
        "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
        "miDebuggerPath": "E:\\mingw-w64\\mingw64\\bin\\gdb.exe" // 調(diào)試器路徑,Windows下后綴不能省略盒刚,Linux下則不要
      },
      "osx": {
        "externalConsole": true
      }
    }
  ]
}

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "process",
      "command": "g++",
      "args": [
        "-g",
        "-Wall",
        "-std=c++14",
        "-lm",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.o"
      ],
      "presentation": {
        "echo": false,
        "reveal": "silent",
        "showReuseMessage": false
      },
      "problemMatcher": "$gcc",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "windows": {
        "args": [
          "-g",
          "-Wall",
          "-std=c++14",
          "-lm",
          "${file}",
          "-o",
          "${fileDirname}/${fileBasenameNoExtension}.exe"
        ]
      }
    },
    {
      "label": "run",
      "type": "shell",
      "dependsOn": "build",
      "command": "${fileDirname}/${fileBasenameNoExtension}.o",
      "presentation": {
        "focus": true
      },
      "group": {
        "kind": "test",
        "isDefault": true
      },
      "windows": {
        "command": "${fileDirname}/${fileBasenameNoExtension}.exe"
      }
    }
  ]
}

settings.json

{
    "files.exclude": {
        "**/*.o": true,
        "**/*.exe": true,
        "**/*.class": true,
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    }
}

注意

  • 如果你想要使用以上配置文件腺劣,請(qǐng)將 lsunch.json 文件中的調(diào)試器路徑改為你的相應(yīng)路徑示例如下
  • "miDebuggerPath": "E:\mingw-w64\mingw64\bin\gdb.exe" // 調(diào)試器路徑,Windows 下后綴不能省略因块,Linux 下則不要

用戶設(shè)置和工作空間設(shè)置

  • 用戶設(shè)置:這種方式進(jìn)行的設(shè)置誓酒,會(huì)適用于該用戶打開的所有工程/實(shí)例

  • 工作空間設(shè)置:工作空間是指使用VScode打開的某個(gè)文件夾,在該文件夾下會(huì)創(chuàng)建一個(gè)名為贮聂。vscode的文件夾,保存著項(xiàng)目的相應(yīng)設(shè)置寨辩。工作空間的設(shè)置會(huì)覆蓋用戶的設(shè)置吓懈。

  • vscode 的配置文件 setting.json 的 UI 界面或者 json 形式

  1. UI 界面
    • 進(jìn)入設(shè)置界面,按下快捷鍵Ctrl + , 進(jìn)入設(shè)置靡狞,可以選擇用戶設(shè)置或者工作區(qū)設(shè)置
  2. json 形式界面
    • 按下快捷鍵`Ctrl + Shift + P``耻警,輸入 Preferences: Open User Settings 或 Preferences: Open Workspace Settings〉榕拢可以進(jìn)入相應(yīng)設(shè)置甘穿。

每個(gè)人都有自己的偏好,在使用 VS Code 進(jìn)行開發(fā)時(shí)梢杭,都會(huì)根據(jù)自己的習(xí)慣來(lái)對(duì) VS Code 進(jìn)行用戶級(jí)別的配置温兼。但是,當(dāng)多人共同完成某個(gè)項(xiàng)目的時(shí)候武契,該項(xiàng)目會(huì)有一定的編碼規(guī)范募判,如: 編輯某個(gè)語(yǔ)言時(shí)的設(shè)置荡含,代碼的縮進(jìn)等等,這個(gè)時(shí)候就需要對(duì)該項(xiàng)目進(jìn)行單獨(dú)的工作空間級(jí)別的設(shè)置届垫。

在 UI 界面中释液,將鼠標(biāo)放到設(shè)定左邊的空白位置會(huì)顯示出一個(gè)齒輪,其中有重置設(shè)定/復(fù)制設(shè)定/復(fù)制設(shè)定到 json 三個(gè)選項(xiàng). 因此在團(tuán)隊(duì)協(xié)助中, 可以很輕松地分享項(xiàng)目的特定設(shè)置.

  • 參考文章装处,除上述之外误债,還有針對(duì)特定的語(yǔ)言的編輯設(shè)定,以及安全性設(shè)定妄迁,現(xiàn)在暫時(shí)不深入研究

牛刀小試

[圖片上傳失敗...(image-db8746-1584417703346)]

常見錯(cuò)誤

  • 找不到.exe 文件寝蹈,大概率是以為文件名包含中文,去除文件名中的中文即可
  • 其他錯(cuò)誤參考文章 → zhihu

總結(jié)

  • 安裝完 MingW 并添加環(huán)境變量之后判族,我們其實(shí)是可以直接編程的躺盛,但是你必須要會(huì)要學(xué)會(huì)一些基本 shell 命令,比如你寫了一個(gè)A.cpp文件形帮,在命令行中輸入 g++ A.cpp就會(huì)在當(dāng)前目錄下編譯生成一個(gè) A.exe 的可執(zhí)行文件槽惫,此時(shí)你點(diǎn)擊運(yùn)行 exe 文件即可運(yùn)行(一步操作:g++ -o A.cpp也可)。如果你想要調(diào)試辩撑,命令行 gdb A.exe界斜;
  • 以上就是在命令行界面中簡(jiǎn)單的編譯運(yùn)行一個(gè) c++ 文件,其實(shí) VScode 本質(zhì)是一個(gè)編輯器合冀,想要利用他來(lái)編譯運(yùn)行調(diào)試 C++文件各薇,我們就必須配置幾個(gè)文件,讓他自動(dòng)幫我們輸入一些命令君躺,并實(shí)現(xiàn) UI 界面峭判;如果給編輯器配置上編譯環(huán)境,那么那就是一個(gè) IDE(集成開發(fā)環(huán)境)
  • 配置完環(huán)境變量一定要測(cè)試一下是否成功棕叫,不成功可以重啟電腦再測(cè)試
  • 報(bào)錯(cuò)的時(shí)候能將錯(cuò)誤的關(guān)鍵要點(diǎn)找出來(lái)林螃,否則上網(wǎng)也找不出是啥原因
  • 一些關(guān)鍵詞:GCC、gcc俺泣、g++疗认、gdb、MingW伏钠、clang横漏、MSVC

Reference


版權(quán)聲明:本文為原創(chuàng)文章,版權(quán)歸本博客所有熟掂,轉(zhuǎn)載請(qǐng)注明出處缎浇!
所有原創(chuàng)文章采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國(guó)際許可協(xié)議 進(jìn)行許可
個(gè)人博客:https://www.betterman.xyz

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赴肚,隨后出現(xiàn)的幾起案子华畏,更是在濱河造成了極大的恐慌鹏秋,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡笑,死亡現(xiàn)場(chǎng)離奇詭異侣夷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)仑乌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門百拓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晰甚,你說(shuō)我怎么就攤上這事衙传。” “怎么了厕九?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蓖捶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我扁远,道長(zhǎng)俊鱼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任畅买,我火速辦了婚禮并闲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谷羞。我一直安慰自己帝火,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布湃缎。 她就那樣靜靜地躺著犀填,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗓违。 梳的紋絲不亂的頭發(fā)上九巡,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音靠瞎,去河邊找鬼。 笑死求妹,一個(gè)胖子當(dāng)著我的面吹牛乏盐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播制恍,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼父能,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了净神?” 一聲冷哼從身側(cè)響起何吝,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤溉委,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后爱榕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓣喊,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年黔酥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藻三。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跪者,死狀恐怖棵帽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渣玲,我是刑警寧澤逗概,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站忘衍,受9級(jí)特大地震影響逾苫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淑履,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一隶垮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秘噪,春花似錦狸吞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至至壤,卻和暖如春威始,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背像街。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工黎棠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镰绎。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓脓斩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親畴栖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子随静,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容