用vscode寫C/C++代碼


安裝MinGW-w64

在vscode上寫c/c++代碼需要先安裝好MinGW-w64

  • 下載地址下載x86_64-win32-seh
  • 將其解壓,放入任意路徑(推薦放在C:\Program Files (x86)\下)
  • 將MingGW主目錄下的bin文件夾的路徑加入到用戶的path中
  • 命令行gcc --version測試

安裝插件

在vscode的插件商城中安裝C/C++插件

編寫配置文件

  • 首先在工作目錄中新建.vscode文件夾

  • 然后在.vscode文件夾中新建tasks.json和launch.json文件(針對單文件應用,生成的所有二進制文件都放在源文件所在目錄下的bin目錄中)

    // tasks.json
    {
        "version": "2.0.0",
        "tasks": [
            { //這個大括號里是‘構建(build)’任務
                "label": "build", //任務名稱,可以更改,不過不建議改
                "type": "shell", //任務類型,process是vsc把預定義變量和轉義解析后直接全部傳給command;shell相當於先打開shell再輸入命令,所以args還會經過shell再解析一遍
                "command": "g++", //編譯命令,這里是gcc,編譯c++的話換成g++
                "args": [ //方括號里是傳給g++命令的一系列參數,用於實現一些功能
                    "${file}", //指定要編譯的是當前文件
                    "-o", //指定輸出文件的路徑和名稱
                    "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,讓可執行文件輸出到源碼文件所在的文件夾下的bin文件夾內,並且讓它的名字和源碼文件相同
                    "-g", //生成和調試有關的信息
                    "-Wall", // 開啟額外警告
                    "-static-libgcc", // 靜態鏈接libgcc
                    "-fexec-charset=GBK", // 生成的程序使用GBK編碼,不加這一條會導致Win下輸出中文亂碼
                    "-std=c++11", // 語言標准,可根據自己的需要進行修改,寫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" //捕捉編譯時編譯器在終端里顯示的報錯信息,將其顯示在vscode的‘問題’面板里
            },
            { //這個大括號里是‘運行(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"
                }
            }
        ]
    }
    
    //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 (x86)\\mingw64\\bin\\gdb.exe", // 指定調試器所在路徑,如果你的minGW裝在別的地方,則要改成你自己的路徑,注意間隔是\\
                "preLaunchTask": "build" // 調試開始前執行的任務,我們在調試前要編譯構建。與tasks.json的label相對應,名字要一樣
            }
        ]
    }
    
  • 寫代碼時必須打開包含.vscode的目錄才能正常build或debug

  • build的快捷鍵是ctrl+shift+B,debug的快捷鍵是F5,build and run的快捷鍵需要自行設置(點擊vscode左下角的齒輪,就可以看到修改快捷鍵的選型。點進入之后搜索tasks,為Run Test Task設置快捷鍵即可)

針對多文件的項目的配置文件

//tasks.json
{
    "version": "2.0.0",
    "tasks": [
        { //這個大括號里是‘構建(build)’任務
            "label": "build", //任務名稱,可以更改,不過不建議改
            "type": "shell", //任務類型,process是vsc把預定義變量和轉義解析后直接全部傳給command;shell相當於先打開shell再輸入命令,所以args還會經過shell再解析一遍
            "command": "g++", //編譯命令,這里是gcc,編譯c++的話換成g++
            "args": [ //方括號里是傳給g++命令的一系列參數,用於實現一些功能
                "${fileDirname}\\*.cpp", //指定要編譯的是當前文件
                "-o", //指定輸出文件的路徑和名稱
                "${fileDirname}\\${fileBasenameNoExtension}.exe", //承接上一步的-o,讓可執行文件輸出到源碼文件所在的文件夾下的bin文件夾內,並且讓它的名字和源碼文件相同
                "-g", //生成和調試有關的信息
                "-Wall", // 開啟額外警告
                "-static-libgcc", // 靜態鏈接libgcc
                "-fexec-charset=GBK", // 生成的程序使用GBK編碼,不加這一條會導致Win下輸出中文亂碼
                "-std=c++11", // 語言標准,可根據自己的需要進行修改,寫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" //捕捉編譯時編譯器在終端里顯示的報錯信息,將其顯示在vscode的‘問題’面板里
        },
        { //這個大括號里是‘運行(run)’任務,一些設置與上面的構建任務性質相同
            "label": "run",
            "type": "shell",
            "dependsOn": "build", //任務依賴,因為要運行必須先構建,所以執行這個任務前必須先執行build任務,
            "command": "${fileDirname}\\${fileBasenameNoExtension}.exe", //執行exe文件,只需要指定這個exe文件在哪里就好
            "group": {
                "kind": "test", //這一組是‘測試’組,將run任務放在test組里方便我們用快捷鍵執行
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true, //這個就設置為true了,運行任務后將焦點聚集到終端,方便進行輸入
                "panel": "new"
            }
        }
    ]
}
//launch.json
{
    "version": "0.2.0",
    "configurations": [
        { //這個大括號里是我們的‘調試(Debug)’配置
            "name": "Debug", // 配置名稱
            "type": "cppdbg", // 配置類型,cppdbg對應cpptools提供的調試功能;可以認為此處只能是cppdbg
            "request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加)
            "program": "${fileDirname}\\${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 (x86)\\mingw64\\bin\\gdb.exe", // 指定調試器所在路徑,如果你的minGW裝在別的地方,則要改成你自己的路徑,注意間隔是\\
            "preLaunchTask": "build" // 調試開始前執行的任務,我們在調試前要編譯構建。與tasks.json的label相對應,名字要一樣
        }
    ]
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM