使用 Visual Studio Code 搭建 C/C++ 開發和調試環境

1. 安裝 C/C++ 插件

C/C++ 是由 Microsoft 發佈的支持 C/C++ 智能提示和調試等功能的插件,安裝步驟以下:c++

  • 使用快捷鍵 Ctrl + Shift + X 呼出擴展面板
  • 在搜索框中輸入:C/C++
  • 再安裝由 Microsoft 提供的名爲 C/C++ 插件。

圖片描述

2. 安裝 MinGW-w64 並配置好環境變量

首先下載 MinGW-w64 點這裏下載 MinGW-w64 。下載完成以後咱們開始安裝 MinGw-w64,安裝路徑能夠自由定義,我這裏安裝路徑爲 D:\App\MinGW 。安裝時須要設置的安裝選項以下:shell

  • Version :GCC 版本,直接選最高;
  • Architecture :CPU 架構,系統若是爲64位,則選擇 x86_64;
  • Threads :API 模式,使用默認選項;
  • Exception :異常處理方式,seh 僅針對 64 位架構,sjlj 則兼容 32 位架構;
  • Build revision :修訂版本,使用默認選項;

圖片描述

安裝過程當中須要聯網下載部分文件,因爲網絡問題安裝失敗的,能夠 點這裏下載 免安裝版本。下載後直接解壓在你想安裝的文件夾。express

而後咱們要在安裝路徑中找到 bin 文件夾,一般在 ${MinGW-w64安裝位置}\mingw64\bin ,以個人安裝路徑爲例,bin 文件夾位於 D:\App\MinGW\mingw64\binjson

接下來,咱們將剛剛獲取的 bin 文件夾的路徑添加到系統環境變量。windows

  • Win + R 鍵,打開運行窗口,,輸入 sysdm.cpl 並回車;
  • 在彈出的 系統屬性 窗口,選擇 高級 選項卡;
  • 高級 選項卡找到 環境變量 按鈕,單擊 環境變量 按鈕,打開 環境變量 窗口 ;
  • 環境變量 窗口的 系統變量 區域找到 Path 變量 ,雙擊 Path 出現 編輯環境變量 窗口;
  • 編輯環境變量 窗口點擊 新建,在新建的這行輸入咱們剛剛獲取的 bin 文件夾的路徑,而後點肯定。

圖片描述

3. 測試環境變量是否配置正確

在命令行輸入 gcc --version,若是返回的是已安裝的 gcc 的版本信息,那麼環境變量就配置正確了。數組

下面是在個人電腦上輸入 gcc --version 的結果,能夠看到我安裝的版本爲:gcc 7.3.0網絡

PS C:\Users\Jason> gcc --version
gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4. 建立和設置 C 語言開發工做區

在你的計算機中選擇一個合適的位置,做爲你的 C 語言開發工做區。建議工做區所在路徑僅由字母、數字、下劃線組成,不要包含其餘的符號。例如空格,空格符號經常做爲命令行中命令和參數的間隔符,若是路徑包含空格會致使編譯時出錯。我建立的工做區的路徑爲:D:\Study\C\WorkSpace架構

因爲 Windows 中文版命令行輸出字符是 GB2312 編碼的,而 VS Code 工做區默認是 UTF-8 ,這會致使你編寫的 C 代碼編譯後在命令行執行並查看結果時中文會顯示亂碼,因此咱們要單獨針對工做區進行設置字符編碼,保證程序輸出的字符也採用跟命令行一致的 GB2312 編碼,步驟以下:測試

  • 使用 VS Code 打開你建立的工做區;
  • 在 VS Code 左下角的設置按鈕進設置,再點擊 用戶設置 旁邊的 工做區設置
  • 工做區設置 中添加 "files.encoding":"gb2312"

圖片描述

5. 編寫你的第一個 C 語言程序

在工做區新建一個 C 語言源文件命名爲 hello.c ,輸入如下內容:ui

#include <stdio.h>
#include <windows.h>
int main()
{
    printf("hello world!/n");
    system("pause");
}

6. 配置導入的頭文件參數 c_cpp_properties.json

在編寫完畢並保存以後,你可能會看到 #include 這句下面會有綠色波浪線,這是因爲編譯器沒辦法找到你所使用的頭文件的所在位置。將光標移動到該行,行號左邊會出現 黃色小燈泡 ,點擊會出現一個提示按鈕:Add include path to setting ,繼續點擊該提示,則會在工做區 .vscode 下生成 c_cpp_properties.json 文件。將文件修改爲下面內容:

{
    "configurations": [{
        "name": "MinGW",
        "intelliSenseMode": "gcc-x64",
        "compilerPath": "D:/App/MinGW/mingw64/bin/x86_64-w64-mingw32-gcc.exe",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "includePath": [
            // 下面路徑中的 D:/App/MinGw 部分須要替換成你的 MinGw-w64 安裝路徑
            "${workspaceFolder}/**",
            "D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",
            "D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",
            "D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE",
            "__GNUC__=7",
            "__cdecl=__attribute__((__cdecl__))"
        ],
        "browse": {
            "path": [
                // 下面路徑中的 D:/App/MinGw 部分須要替換成你的 MinGw-w64 安裝路徑
                "${workspaceFolder}/**",
                "D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",
                "D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",
                "D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    }],
    "version": 4
}

留意帶註釋部分的內容,須要將路徑修改爲你本身的安裝路徑哦。

7. 配置調試程序 launch.json

打開已經編寫好的 hello.c ,而後按 F5 調試。由於是第一次調試,系統會彈出 選擇環境 面板,這裏選擇 C++(GDB/LLDB)

圖片描述

選擇運行環境後,VS Code 會在工做區 .vscode 文件夾下建立 luanch.json 模板文件並打開,將文件內容清空,複製下面的內容到文件中並保存:

{
    "version": "0.2.0",
    "configurations": [{
        // 配置 VS Code 調試行爲:
        "name": "GDB Debug", // 設置在啓動配置下拉菜單中顯示調試配置的名稱。
        "preLaunchTask": "Compile", // 調試會話開始前要運行的任務。
        "type": "cppdbg", // 設置要使用的基礎調試器。使用 GDB 或 LLDB 時必須是 cppdbg 。
        "request": "launch", // 設置啓動程序仍是附加到已經運行的實例。啓動或附加 ( launch | attach ).
        "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 調試器將啓動或附加的可執行文件的完整路徑。
        "externalConsole": true, // 設置是否顯示外部控制檯。
        "logging": { // 用於肯定應該將哪些類型的消息記錄到調試控制檯。
            "exceptions": true, // 是否應將異常消息記錄到調試控制檯。默認爲真。
            "moduleLoad": false, // 是否應將模塊加載事件記錄到調試控制檯。默認爲真。
            "programOutput": true, // 是否應將程序輸出記錄到調試控制檯的可選標誌。默認爲真。
            "engineLogging": false, // 是否應將診斷引擎日誌記錄到調試控制檯。默認爲假。
            "trace": false, // 是否將診斷適配器命令跟蹤記錄到調試控制檯。默認爲假。
            "traceResponse": false // 是否將診斷適配器命令和響應跟蹤記錄到調試控制檯。默認爲假。
        },
        // 配置目標應用程序:
        "args": [], // 設置調試時傳遞給程序的命令行參數。
        "cwd": "${workspaceFolder}", // 設置調試器啓動的應用程序的工做目錄。
        "environment": [], // 設置調試時添加到程序環境中的環境變量,例如: [ { "name": "squid", "value": "clam" } ]。
        // 自定義 GDB 或者 LLDB:
        "windows": {
            "MIMode": "gdb", // 指定 VS Code 鏈接的調試器,必須爲 gdb 或者 lldb。
            "miDebuggerPath": "D:/App/MinGW/mingw64/bin/gdb.exe" // 調試器的路徑,修改成你的安裝路徑
        },
        "miDebuggerArgs": "", // 傳遞給調試器的附加參數
        "stopAtEntry": false, // 設置調試器是否中止在目標的入口(附加時忽略)。默認值爲 false。
        "setupCommands": [{ // 執行下面的命令數組以設置 GDB 或 LLDB
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing", // 鼠標懸停查看變量的值,須要啓用 pretty-printing 。
            "ignoreFailures": true // 忽略失敗的命令,默認爲 false 。
        }]
    }]
}

留意 luanch.json 中的註釋內容,記得把 "miDebuggerPath" 參數修改爲你本身安裝位置裏的 gdb.exe

gdb.exe 位於 {MinGW-w64安裝位置}\mingw64\bin 下面。

8. 配置調試前執行的任務 task.json

再按一次 F5 ,會彈出「找不到任務」的提示窗口,點擊 配置任務 按鈕,以下圖所示:

圖片描述

而後在彈出的命令面板選擇 使用模板建立 task.json 文件 ,以下圖所示:

圖片描述

繼續選擇 Others 運行任意外部命令的示例 ,以下圖所示:

圖片描述

完成以上步驟以後,會在工做區的 .vscode 目錄下生成 tasks.json 文件,並自動打開 task.json 文件。

圖片描述

接下來咱們將 task.json 文件內容清空,複製下面的內容到文件中並保存:

{
    // 有關 tasks.json 格式的參考文檔:https://go.microsoft.com/fwlink/?LinkId=733558 。
    "version": "2.0.0",
    "tasks": [{
        "label": "Compile",
        "type": "shell", // { shell | process }
        // 適用於 Windows 的配置:
        "windows": {
            "command": "gcc",
            "args": [
                "-g",
                "\"${file}\"",
                "-o",
                "\"${fileDirname}\\${fileBasenameNoExtension}.exe\""
                // 設置編譯後的可執行文件的字符集爲 GB2312:
                // "-fexec-charset", "GB2312"
                // 直接設置命令行字符集爲 utf-8:
                // chcp 65001
            ]
        },
        // 定義此任務屬於的執行組:
        "group": {
            "kind": "build", // { build | test }
            "isDefault": true // { true | false }
        },
        // 定義如何在用戶界面中處理任務輸出:
        "presentation": {
            // 控制是否顯示運行此任務的面板。默認值爲 "always":
            // - always:    老是在此任務執行時顯示終端。
            // - never:     不要在此任務執行時顯示終端。
            // - silent:    僅在任務沒有關聯問題匹配程序且在執行時發生錯誤時顯示終端
            "reveal": "silent",
            // 控制面板是否獲取焦點。默認值爲 "false":
            "focus": false,
            // 控制是否將執行的命令顯示到面板中。默認值爲「true」:
            "echo": false,
            // 控制是否在任務間共享面板。同一個任務使用相同面板仍是每次運行時新建立一個面板:
            // - shared:     終端被共享,其餘任務運行的輸出被添加到同一個終端。
            // - dedicated:  執行同一個任務,則使用同一個終端,執行不一樣任務,則使用不一樣終端。
            // - new:        任務的每次執行都使用一個新的終端。
            "panel": "dedicated"
        },
        // 使用問題匹配器處理任務輸出:
        "problemMatcher": {
            // 代碼內問題的全部者爲 cpp 語言服務。
            "owner": "cpp",
            // 定義應如何解釋問題面板中報告的文件名
            "fileLocation": [
                "relative",
                "${workspaceFolder}"
            ],
            // 在輸出中匹配問題的實際模式。
            "pattern": {
                // The regular expression.
                "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                // 第一個匹配組匹配文件的相對文件名:
                "file": 1,
                // 第二個匹配組匹配問題出現的行:
                "line": 2,
                // 第三個匹配組匹配問題出現的列:
                "column": 3,
                // 第四個匹配組匹配問題的嚴重性,若是忽略,全部問題都被捕獲爲錯誤:
                "severity": 4,
                // 第五個匹配組匹配消息:
                "message": 5
            }
        }
    }]
}

9. 完成

到這裏,C 開發環境就已經配置完畢。接下來咱們在 hello.c 的編輯窗口按 F5 運行下,看下效果。

圖片描述

若是你還想再建立其餘的 C 語言開發工做區,咱們只須要新建一個文件夾,再把如今已有工做區目錄下的 .vscode 文件夾複製到新建的文件夾便可。

相關文章
相關標籤/搜索