Visual Studio Code安裝與C/C++開發調試環境搭建

目錄

 

簡介

VSCode安裝

VSCode語言設置

安裝開發套件

構建C/C++編譯環境

安裝Clang

安裝MinGW

VSCode工程配置

launch.json

tasks.json

測試


簡介

新工作需要切換到Windows下搬磚,得暫時告別我心愛的Vim了,淚奔三分鐘。聽說Windows下有個地表最強編輯器Visual Studio Code,盤它!

本文介紹了Windows10環境下安裝Visual Studio Code(Version 1.42)並搭建C/C++開發調試環境的所有流程。


VSCode安裝

VSCode是一款功能強大的免費編譯器,同時支持Windows和Linux平臺,操作友好功能全面,且原生支持中文界面,太優秀了。

官網下載:https://code.visualstudio.com/

下載安裝即可,注意需要勾選“添加到環境變量”選項。


VSCode語言設置

VSCode的默認語言是英文,我們可以將其更改爲中文。

按快捷鍵Ctrl+Shift+P打開命令窗口,搜索>language

之後我們依次選擇“Configure Display Language”->“Install additional languages...”->“Install” 

中文(簡體)語言包安裝完成後按提示重啓即可。


安裝開發套件

在應用商店中搜索並依次安裝C/C++插件,跟安裝語言包的方法一樣。

推薦安裝並啓用以下插件:

【C/C++支持】C/C++

【程序運行環境】Code Runner

【自動補齊】C++ Intellisense

【Clang編譯環境】C/C++ Clang Command Adapter

【調試工具】Native Debug

【靜態檢查工具】C/C++ Advanced Lint


構建C/C++編譯環境

VSCode只是一個編輯器,本身並不支持編譯運行功能。因此我們需要通過插件來配置編譯運行環境,本文選用MinGW-W64+Clang環境。

安裝Clang

Clang官網下載:http://releases.llvm.org/download.html

這裏按電腦配置選擇,我選擇Pre-Built Binaries: Windows(64bit)(.sig),最終下載LLVM-9.0.0-win64.exe。

下載完成後安裝,安裝時選擇“Add LLVM to the system PATH for all users”。安裝完成後可能會提示“MSVC integration install failed”。這是因爲Clang默認使用msvc工具鏈,但我們採用了MinGW,因此無視即可。裝完後Win+R打開cmd,運行clang -v觀察到以下結果則安裝成功。

安裝MinGW

MinGW下載:http://www.mingw-w64.org/doku.php/download/mingw-builds

這裏給出的是在線安裝方式,如果下載了離線安裝壓縮包的話,選擇合適位置解壓,將mingw64/bin加入環境變量PATH即可。

先下載mingw-w64安裝工具mingw-w64-install.exe,下載完成後直接運行,需要配置以下五個參數,注意別搞錯了:

  • Version:指定版本號,從4.9.1-8.1.0,按需選擇,沒有特殊需求就用最新版本;
  • Architecture:按操作系統來選,64位系統選擇x86_64,32位系統選擇i686;
  • Threads:設置線程標準,可選posix或win32;
  • Exception:設置異常處理標準,x86_64可選seh或sjlj,i686則爲dwarf或sjlj;
  • Build revision:構建版本號,默認只有一個0,如果有多個選最大的即可。

之後一路next安裝,裝完後Win+R打開cmd,運行gcc -v觀察到以下結果則安裝成功。

至此VSCode下C/C++運行環境就搭建好了。


VSCode工程配置

系統合適位置創建工程目錄,注意路徑全部英文且沒有空格(例如C:\Users\Administrator\Desktop\test)。

VSCode打開該目錄,並在該目錄下新建目錄.vscode,將以下launch.json和tasks.json文件拷貝到.vscode目錄中。

launch.json

{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以查看現有屬性的描述。
    // 欲瞭解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe build and debug active file", // 配置名稱,會顯示在啓動配置的下拉菜單中
            "type": "cppdbg", // 配置類型,這裏只能爲cppdbg
            "request": "launch", // 請求配置類型,可以爲launch(啓動)或attach(附加)
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 待調試的可執行程序路徑
            "args": [], // 程序啓動時的傳參,按需求填即可
            "stopAtEntry": true, // 是否在main入口處打斷點,一般選true
            "cwd": "${workspaceFolder}", // 調試程序時的工作路徑
            "environment": [], // 環境變量設置
            "externalConsole": true, // 調試時是否顯示控制檯窗口,一般設置爲true顯示控制檯
            "MIMode": "gdb", // 指定調試器,可以爲gdb或lldb。但windows下沒有預編譯好的lldb,還是老老實實gdb吧
            "miDebuggerPath": "C:\\TDM-GCC-64\\bin\\gdb.exe", // gdb的調用路徑,\\爲轉義
            "setupCommands": [
                {
                    "description": "爲 gdb 啓用整齊打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false // 調試時是否忽略失敗,當然要false
                }
            ],
            "preLaunchTask": "gcc.exe build active file" // 調試開始前要執行的動作,一般爲編譯文件。此處內容應與tasks.json的taskName一致
        }
    ]
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "gcc.exe build active file", // 任務名稱,與launch.json的preLaunchTask相對應
            "type": "shell",
            "command": "gcc", // 如果用MinGW,編譯c用gcc,編譯c++用g++
            "args": [ // 編譯參數
                "${file}",
                "-o", // 指定輸出文件名,不加該參數則默認輸出a.exe
                "${fileDirname}/${fileBasenameNoExtension}.exe", // 注意這裏用/標識目錄而不是\\
                "-g", // 支持gdb調試
                "-Og", // -Og 是在gcc 4.8版本引入的,按照源碼自動確定優化等級,基本相當於沒有優化
                "-Wall", // 開啓額外的編譯警告
                "-static-libgcc", // 靜態鏈接
                "-fcolor-diagnostics",
                "--target=x86_64-w64-mingw", // tasks.json的默認target爲msvc,不加這一條就會找不到頭文件
                "-std=c11" // c++最新標準爲c++1z即c++17,C語言最新標準爲c11,可根據需要自行修改
            ],
            "group": {
                "kind": "build",
                "isDefault": true // 設爲false則可做到一個tasks.json配置多個編譯指令
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 設置是否在“終端”中顯示編譯信息,可以爲always,silent,never。沒說的,always。
                "focus": false,
                "panel": "shared" // 不同的文件的編譯信息共享一個終端面板
            },
            "problemMatcher": { // 編譯錯誤輸出配置
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "/"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", // 正則表達式,用於描述在“問題”欄中顯示的信息。
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

測試

在test目錄下創建test.c測試文件。

#include <stdio.h>

int main(int argc, char const *argv[])
{
    /* code */
    printf("Hello world \n");
    return 0;
}

Ctrl+Alt+n運行,或在main()文件源碼處鼠標右鍵選擇Run Code運行程序,完結撒花~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章