VsCode 配置 C 語言環境

該文章使用 Google 翻譯處理。

該文章由 Hiyoung 編寫,翻譯自 yexca

其文章 (簡體中文): https://blog.hiyoung.xyz/2022/12/15/997871bc263d/

正文

VSC只是一個純文本編輯器,不是 IDE (集成開發環境),不含編譯器和許多其它功能,所以編譯器要自己裝好

第一步:在 vscode 官網下載軟件,鏈接: Visual Studio Code – Code Editing. Redefined

第二步:我們需要下載一個編譯器,C 語言使用 gcc,鏈接: MinGW-w64 – for 32 and 64 bit Windows download | SourceForge.net ,選最新版本中的 x86\_64-posix-seh 即可,網站下載可能較慢,下面給出百度網盤鏈接

(以下附上百度網盤秒傳鏈接:b48357234368d9ba439fc0db6e86531d#84cbf1dc60abe4fff77d035540ea3132#140697937#mingw64.zip)

(正常百度網盤鏈接:鏈接: https://pan.baidu.com/s/17FYT\_Y-s-I2yajFc2MICqw 提取碼: ewis )

第三步:將 E:\mingw64\bin 添加到系統變量中(盤符根據自己編譯器安裝的位置)

以 Win11 為例:打開設置->系統->關於->高級系統設置->環境變量->系統變量->點擊Path->編輯-> 瀏覽-> 把對應文件加入即可

配置 C 語言 1

配置 C 語言 3

第四步:

按 Win+R,運行 cmd(不要跳這一步),輸入 gcc,應該會提示 no input files 而不是“不是內部命令或外部命令”或者“無法將“gcc” 項識別為cmdlet、函數、腳本文件或可運行程序的名稱”。如果是“不是內部命令或外部命令”,說明 gcc 在的文件夾沒有在環境變量的Path中,要加進去才行。如果加了還是這樣,重啟(不要忘記重啟)。如果重啟了還不行,那就是你自己進行的操作有問題。

gcc -v 可以顯示出 gcc 的版本。如果顯示出來的版本與你剛下的不同/更老,說明 Path 裡原本有老版本的編譯器,可能是安裝其它 IDE 時裝上的。則需要去掉 Path 裡原來的那一個 gcc 的路徑。

這兩項驗證一定要符合,否則必須修改環境變量。小心別錯刪了。

配置C語言 4

第五步:現在打開 vscode,下載相關插件

配置C語言 5

第六步:我們需要寫兩個 json 文件,下面依次是 launch.json 和tasks.json(兩個文件名也必須是launch.json 和tasks.json ) 注意看代碼註釋,兩個文件都有幾處地方需要將路徑改為自己編譯器的路徑

{
    // 使用 IntelliSense 了解相關屬性。
    // 懸停以查看現有屬性的描述。
    // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe - 生成和調試活動文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\bin\\$          {fileBasenameNoExtension}.exe",//這裡意思生成的二進制代碼會放入當前文件的bin文件夾中,我們需要自己新建一個bin文件夾
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "為 gdb 啟用整齊打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe 生成活動文件"
        }
    ]
}
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活動文件",
            "command": "E:\\mingw64\\bin\\gcc.exe",//改成自己的檔案路徑
            "args": [
                /*"${fileDirname}\\*.c",
                "-o",
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
                "-g"//多檔編譯*/
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe"//這裡意思產生的二進位程式碼會放入目前檔案的 bin 資料夾中,我們需要自己新建一個 bin 資料夾
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 執行任務時是否跳到終端面板,可以為 always,silent,never。具體參見 VSC 的文檔
                "focus": true,     // 設為 true 後可以使執行 task 時焦點聚集在終端,但對編譯 C/C++ 來說,設為 true 沒有意義
                "panel": "shared"   // 不同的檔案的編譯資訊共享一個終端面板
            },
            "detail": "調試器生成的任務。"
        },
        {
            "type": "cppbuild",
            "label": "(多文件)gcc.exe - 生成和調試活動文件",
            "command": "E:\\mingw64\\bin\\gcc.exe",//改成自己的檔案路徑
            "args": [
                "${fileDirname}\\*.c",
                "-o",
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",//這裡意思產生的二進位程式碼會放入目前檔案的 bin 資料夾中,我們需要自己新建一個 bin 資料夾
                "-g"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 執行任務時是否跳到終端面板,可以為 always,silent,never。具體參見 VSC 的文檔
                "focus": true,     // 設為 true 後可以使執行 task 時焦點聚集在終端,但對編譯 C/C++ 來說,設為 true 沒有意義
                "panel": "shared"   // 不同的檔案的編譯資訊共享一個終端面板
            },
            "detail": "調試器生成的任務。"
        }
    ],
    "version": "2.0.0"
}

至此設置工作基本結束,vscode 有許多好用的插件可以自己探索,未來也會在寫一篇文章推荐一些好用的插件

This post is licensed under CC BY-NC-SA 4.0 by the author.