windows配置vscode c/c++開發(傾向於刷題)


過程

  1. 安裝vscode
  2. MinGW-w64 - for 32 and 64 bit Windows 稍微往下翻一下,找到MinGW-W64 GCC-5.4.0x86_64-posix-seh安裝。爲什麼是這個版本?因爲牛客支持的兩種C++編譯器分別爲C++14(G++5.4.0)C++11(glang 3.9),這裏保證與牛客相同
  3. 解壓MinGW壓縮包到你想安裝的路徑。添加bin目錄到環境變量path中:
    在這裏插入圖片描述
    win10以下的操作系統需要重啓,以生效更改。
  4. 安裝vscode插件:
    • C/C++:又名 cpptools,提供Debug和Format功能
    • Code Runner:右鍵即可編譯運行單文件,很方便;但無法Dubug
  5. 新建工程,在工程目錄下新建.vscode文件夾,在文件夾下新建launch.jsontasks.jsonc_cpp_properties.json文件:
    在這裏插入圖片描述
    launch.json內容:
// launch.json
{
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "C++ Launch (GDB)",                 // 配置名稱,將會在啓動配置的下拉菜單中顯示
            "type": "cppdbg",                           // 配置類型,這裏只能爲cppdbg
            "request": "launch",                        // 請求配置類型,可以爲launch(啓動)或attach(附加)
            "targetArchitecture": "x64",                // 生成目標架構,一般爲x86或x64
            // "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 將要進行調試的程序的路徑
            // "args": [],                                 // 程序調試時傳遞給程序的命令行參數,一般設爲空即可
            // 方法一:防止debug時程序一閃而過的方法
            // "program": "C:/Windows/System32/cmd.exe",
            // "args": [
            // "/K",
            // "${fileDirname}/${fileBasenameNoExtension}.exe"
            // ],
            // 方法二:
            "program": "C:/Windows/System32/cmd.exe",
            "args": [
                "/C",
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "&",
                "pause"
            ],

            
            "stopAtEntry": false,                       // 設爲true時程序將暫停在程序入口處,一般設置爲false
            "cwd": "${workspaceRoot}",                  // 調試程序時的工作目錄,一般爲${workspaceRoot}
            "externalConsole": true,                    // 調試時是否顯示控制檯窗口,一般設置爲true顯示控制檯
            "internalConsoleOptions": "neverOpen",      // 如果不設爲neverOpen,調試時會跳到“調試控制檯”選項卡",
            "MIMode": "gdb",                            // 指定連接的調試器
            "miDebuggerPath": "C:/mingw64/bin/gdb.exe", // 調試器路徑
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for GDB",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "Compile" 
        }
    ]
}

tasks.json內容:

// tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile",
            "command": "g++",
            "args": [
                "${file}",   // 指定編譯源代碼文件
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe", // 指定輸出文件名,不加該參數則默認輸出a.exe
                "-O0",      // 優化級別
                "-ggdb3",   // 生成和調試有關的信息
                "-Wall",    // 開啓額外警告
                "-static-libgcc",   // 靜態鏈接
                //"-std=c++17",       // 使用c++17標準
                "-std=c++14",       // 使用c++14標準
                "-finput-charset=UTF-8",    //輸入編譯器文本編碼 默認爲UTF-8
                "-fexec-charset=GB18030",   //輸出exe文件的編碼
                "-D _USE_MATH_DEFINES"
            ],

            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "absolute",
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },

            "type": "shell",
            
            "group": {
                "kind": "build",
                "isDefault": true
            },

            "presentation": {
                "echo": true,
                "reveal": "always", // 在“終端”中顯示編譯信息的策略,可以爲always,silent,never
                "focus": false,
                 "panel": "shared" // 不同的文件的編譯信息共享一個終端面板
            },
        }
    ]
}

c_cpp_properties.json內容:


{
    "configurations": [
        {
            "name": "MinGW64",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "C:/mingw64/bin/g++.exe",
            "includePath": [
                "${workspaceFolder}"
            ],
            "cppStandard": "c++14"
        }
    ],
    "version": 4
}

其他問題

  • C++按F5執行程序後一閃而過:
    解決:在launch.json中修改program和args
    在這裏插入圖片描述
    方法一原理:
    通過 cmd 的參數 “/K” 來實現
    意思是: 是執行完命令後不關閉命令窗口
    方法二原理:
    這個方法主要是通過cmd的參數 “/C” 來實現,它的效果是:“執行字符串指定的命令然後終止”。此外,還可以通過 ”help cmd“來查看所有可用的參數。

TODO:

  • 完善並簡化過程
  • 顯示程序運行完的時間(不包括輸入樣例的時間)
  • 最好能自動讀取測試樣例文件
  • vscode控制檯輸入字符數有上限,太長的測試用例輸入不了,嘗試重定向cin之類的操作

相關/參考鏈接

VSCode C++ 運行結束馬上退出, 窗口一閃而過解決辦法, 不修改代碼 | 文章開頭還給了幾個微軟官方教程,教你如何在vscode上配置c++環境
Get Started with C++ and Mingw-w64 | 官方教程,還教你如何debug

Visual Studio Code 如何編寫運行 C、C++ 程序? - 譚九鼎的回答 - 知乎
Visual Studio Code -> VSCode 開發環境搭建 ---- C/C++ 開發環境搭建 及 代碼運行(code runner 插件)
vscode for c/c++(ACM配置)

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