VS code 搭建 C 和 C-- 環境的完整圖文教程!

來自公衆號:C 語言編程俱樂部

前言

前兩天有同學問我如何用 VScode 搭建 C 語言的環境。

接下來直接動手搭建 C 和 C++ 的環境。

VS Code 簡單介紹

VS code 是一個微軟旗下的一個廣受歡迎的開源文本編輯器,相較於其他編輯器,VS code 有着非常多的優點而讓開發者們對其愛不釋手。

比如炫酷的主題、漂亮的外觀、集成了終端以及輕量級的體積等等等等,VS code 最厲害的地方在於他有着成熟的插件市場(我們下面馬上就要用到)以滿足開發者的各種開發需求,得益於這個插件市場,我們可以把 VS code 打造成各種開發環境。

VS code 的下載也很簡單,直接去官網下載安裝即可。

MinGW 簡單介紹和下載配置

需要注意的一點是,VS code 只是一個文本編輯器,本質上和 Windows 的記事本是一個東西,它不是一個編譯器,它只是一個編輯器,編輯器是無法編譯運行程序的,這是編譯器的工作。

那麼爲了讓我們能夠在 VS code 裏面編譯並運行 C/CPP 文件,我們需要去額外安裝 C 和 C++ 的編譯器:GCC。

Windows 平臺上的 GCC 移植版本是 MinGW。我們用 MinGW 其實也就是用裏面的 GCC 來編譯我們寫的 C/C++ 文件。

進去之後,選擇 files:

下載 MinGW 的壓縮包:

下載過程由於是從外網下載,會比較慢,可以多試幾次或者掛代理,另外根據筆者的經驗來看外網的東西一般中午下載起來會比較快。

下載好了之後把他放在一個沒有中文和空格的目錄下解壓,然後配置環境變量。

在 Win10 的搜索欄(快捷鍵 win+S)搜索環境變量會彈出系統屬性,點擊環境變量——上方的用戶變量裏面找到 Path——點擊編輯——點擊新建,然後把你的 MinGW 的 bin 路徑複製進去(如:D:\development\MinGW\bin),然後一路確定。

這樣環境變量就配置好了,我們可以隨便找一個路徑打開一個 cmd 輸入:gcc --version 來驗證一下:

接下來我們配置 VScode

VScode 配置

打開 VScode,然後打開左邊的插件市場,下載並安裝兩個插件:

● Chinese:中文漢化插件,VScode 默認是英文界面,爲了方便咱給他改成中文的。在搜索欄搜索 Chinese,選則中文簡體點擊右下角的安裝(我這裏安裝過了所以沒有那個安裝按鈕)。

● C/C++:一款 C/C++ 語法高亮的代碼插件。安裝方式和 Chinese 一樣。

搞定之後我們來寫一個 C 文件測試一下,點擊左上角的文件——打開文件夾——選擇一個空文件夾打開,然後右鍵——新建文件:

隨便起個名(如 Hello.c),隨便寫點代碼,比如經典的 Hello World:

#include<stdio.h>
int main(void)
{
    printf("Hello World!");
    return 0;
}

然後我們編譯他,點擊最上方的終端 --> 配置默認生成任務(也可以用快捷鍵 ctrl+shift+b)然後你會看到這樣一個選項:

這是讓我們選擇用什麼來編輯這個文件,由於我們寫的是 C 文件,應該用能夠編譯 C 文件的編譯器(也就是我們上文配置的 MinGW 裏面的 GCC)。

我們點擊這裏的 C/C++ 編輯器,然後就會發現我們這裏生成了一個 Hello.exe 文件和 .vs code 文件夾。

打開一個終端(終端——新終端),輸入.\Hello.exe 來運行這個文件,你會發現終端成功輸出 Hello World,這代表成功運行。

至於這個.vscode 文件夾,是當前文件夾裏的一些配置文件(比如這裏的 task.json,它其中寫入了使用什麼編譯器,編譯器的路徑等信息)。

{
    "version": "2.0.0",
    "tasks": [
        {//這個大括號裏是‘構建(build)’任務
            "label": "build", //任務名稱,可以更改,不過不建議改
            "type": "shell", //任務類型,process是vsc把預定義變量和轉義解析後直接全部傳給command;shell相當於先打開shell再輸入命令,所以args還會經過shell再解析一遍
            "command": "gcc", //編譯命令,這裏是gcc,編譯c++的話換成g++
            "args": [    //方括號裏是傳給gcc命令的一系列參數,用於實現一些功能
                "${file}", //指定要編譯的是當前文件
                "-o", //指定輸出文件的路徑和名稱
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,讓可執行文件輸出到源碼文件所在的文件夾下的bin文件夾內,並且讓它的名字和源碼文件相同
                "-g", //生成和調試有關的信息
                //"-Wall", // 開啓額外警告
                //"-static-libgcc",  // 靜態鏈接libgcc
                "-fexec-charset=GBK", // 生成的程序使用GBK編碼,不加這一條會導致Win下輸出中文亂碼
                "-std=c11", // 語言標準,可根據自己的需要進行修改,寫c++要換成c++的語言標準,比如c++11
            ],
            "group": {  //group表示‘組’,我們可以有很多的task,然後把他們放在一個‘組’裏
                "kind": "build",//表示這一組任務類型是構建
                "isDefault": true//表示這個任務是當前這組任務中的默認任務
            },
            "presentation": { //執行這個任務時的一些其他設定
                "echo": true,//表示在執行任務時在終端要有輸出
                "reveal": "always", //執行任務時是否跳轉到終端面板,可以爲always,silent,never
                "focus": false, //設爲true後可以使執行task時焦點聚集在終端,但對編譯來說,設爲true沒有意義,因爲運行的時候才涉及到輸入
                "panel": "new" //每次執行這個task時都新建一個終端面板,也可以設置爲shared,共用一個面板,不過那樣會出現‘任務將被終端重用’的提示,比較煩人 
            },
            "problemMatcher": "$gcc" //捕捉編譯時編譯器在終端裏顯示的報錯信息,將其顯示在vs code的‘問題’面板裏
        },
        {//這個大括號裏是‘運行(run)’任務,一些設置與上面的構建任務性質相同
            "label": "run",
            "type": "shell",
            "dependsOn": "build", //任務依賴,因爲要運行必須先構建,所以執行這個任務前必須先執行build任務,
            "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //執行exe文件,只需要指定這個exe文件在哪裏就好
            "group": {
                "kind": "test", //這一組是‘測試’組,將run任務放在test組裏方便我們用快捷鍵執行
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true, //這個就設置爲true了,運行任務後將焦點聚集到終端,方便進行輸入
                "panel": "new"
            }
        }
    ]
}

調試程序

接下來我們說調試,VS code 的調試快捷鍵是 F5,按下 F5,會出現調試器選擇界面:

選擇 GDB,再選擇 gcc,你會發現終端那裏跳轉到了調試控制檯,並且 .vscode 文件夾下面又多了一個 launch.json 文件,上文我們已經說過了 .vscode 文件夾存放當前工作文件夾的一些配置文件。

例如 task.json 其實是編譯運行的配置文件,這裏的 launch.json 文件就是調試相關的配置文件,詳解如下:

{
    "version": "0.2.0",
    "configurations": [
        { //這個大括號裏是我們的‘調試(Debug)’配置
            "name": "Debug", // 配置名稱
            "type": "cppdbg",  // 配置類型,cppdbg對應cpptools提供的調試功能;可以認爲此處只能是cppdbg
            "request": "launch",  // 請求配置類型,可以爲launch(啓動)或attach(附加)
            "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",  // 將要進行調試的程序的路徑
            "args": [],  // 程序調試時傳遞給程序的命令行參數,這裏設爲空即可
            "stopAtEntry": false,  // 設爲true時程序將暫停在程序入口處,相當於在main上打斷點
            "cwd": "${fileDirname}",  // 調試程序時的工作目錄,此處爲源碼文件所在目錄
            "environment": [],  // 環境變量,這裏設爲空即可
            "externalConsole": false, // 爲true時使用單獨的cmd窗口,跳出小黑框;設爲false則是用vscode的內置終端,建議用內置終端
            "internalConsoleOptions": "neverOpen", // 如果不設爲neverOpen,調試時會跳到“調試控制檯”選項卡,新手調試用不到
            "MIMode": "gdb", // 指定連接的調試器,gdb是minGW中的調試程序
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe", // 指定調試器所在路徑,如果你的minGW裝在別的地方,則要改成你自己的路徑,注意間隔是\\
            "preLaunchTask": "build" // 調試開始前執行的任務,我們在調試前要編譯構建。與tasks.json的label相對應,名字要一樣
    }]
}

我們來試着調試程序,按下 F9 是爲當前所在行設置斷點。當然你也可以將 launch.json 文件中的 "stopAtEntry": false 改爲 true。

這樣程序會在 main 函數開始暫停,相當於在 main 函數的起步打斷點,進入調試之後 VS code 會給出一個調試工具,長這樣:

從左到右一次爲:

    ● 繼續(F5)

    ● 單步跳過(F10)

    ● 單步調試(F11)

    ● 單步跳出(shift+F11)

    ● 重啓(shift+ctrl+F5)

    ● 停止(shift+F5)

同時你可以在左邊的變量區域監視變量變化情況,這些都是基本的調試功能,這裏不再闡述。

結束語

到這裏爲止我們已經把 VS code 打造成了一個 C 和 C++ 的開發環境,並嘗試了編譯運行和調試。

你可以拋棄笨拙 VC 6 和調試不方便的 Dev C++ 轉而使用 VS code 編寫調試 C/C++ 的程序了,祝你用的開心!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/thVubvXgOZR3eHjvVBUjUw