vscode C++環境配置總結(mingw-w64 和 GDB)


vscode的3個配置文件說明。
VS需要為每一個文件夾做單獨配置,所以建議把.vscode文件夾放到你常用的文件夾的頂層,這樣就不用重復配置了。
不用每個新cpp文件就要一套配置。這些配置在你配置好的文件夾內的所有子文件夾和文件都能使用。
 
  • task.json
task.json文件告訴VS Code如何構建(編譯)程序。這個任務將調用g++編譯器來創建一個基於源代碼的可執行文件。
Terminal > Configure Default Build Task.
{
    "version": "2.0.0",
    "command": "g++",                                          // label,可任取
    "args": [                                                  // g++命令行參數
        "-g",
        "${workspaceFolder}\\*.cpp",
        "-I",
        "--std=c++11",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
    ], 
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": [
            "relative",
            "${workspaceFolder}"
        ],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

 

  • launch.json
launch.json文件配置VS Code啟動GDB調試器。
通過智能提示查看有那些屬性可以設置, 如果要查看屬性的具體含義, 可以把鼠標懸停在屬性上面, 會屬性的使用說明.
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",                              // 配置名稱,將會在啟動配置的下拉菜單中顯示
            "type": "cppdbg",                                    // 配置類型,這里只能為cppdbg
            "request": "launch",                                 // 請求配置類型,可以為launch(啟動)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",     // 將要進行調試的程序的路徑
            "args": [],                                          // 程序調試時傳遞給程序的命令行參數,一般設為空即可
            "stopAtEntry": false,                                // 設為true時程序將暫停在程序入口處,一般設置為false
            "cwd": "${workspaceFolder}",                         // 調試程序時的工作目錄,一般為${workspaceRoot}即代碼所在目錄
            "environment": [],
            "externalConsole": true,                             // 調試時是否顯示控制台窗口,一般設置為true顯示控制台
            "MIMode": "gdb",
            "miDebuggerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gdb.exe",  // miDebugger的路徑,注意這里要與MinGw的路徑對應
            "preLaunchTask": "g++",                              // 調試開始前執行的任務,要與task.json里的label/command值一樣
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ]
        }
    ]
}
 

 

  • c_cpp_properties.json
c_cpp_properties.json 對C/ C++擴展進行更多控制,允許相關改變設置,例如編譯器的路徑,包括路徑,c++標准(默認是c++ 17),等等。
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [                                                            // 頭文件包含路徑
                "${workspaceFolder}/**",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/include/**",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
                "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=6",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "intelliSenseMode": "msvc-x64",
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "",
                "path": [
                    "${workspaceRoot}",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/include/**",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
                    "C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
                ]
            }
        }
    ],
    "version": 4
}

 

  • vscode預定義的變量 
e.g.:  
1. vscode編輯器打開的文件:/home/your-username/your-project/folder/file.ext
2. vscode打開的根工作區:/home/your-username/your-project
 
${workspaceFolder}           - 在VS Code中打開的文件夾路徑                             - /home/your-username/your-project
${workspaceFolderBasename}   - 在VS Code中打開的文件夾名稱沒有任何斜杠(/)                - your-project
${file}                      - 當前打開的文件                                         - /home/your-username/your-project/folder/file.ext
${fileWorkspaceFolder}       - 當前打開的文件所在的文件夾                               - /home/your-username/your-project
${relativeFile}              - 相對於workspaceFolder,當前打開的文件                   - folder/file.ext
${relativeFileDirname}       - 相對於workspaceFolder,當前打開的文件的目錄名             - folder
${fileBasename}              - 當前打開的文件的基名                                    - file.ext
${fileBasenameNoExtension}   - 當前打開的文件的基名沒有文件擴展名                         - file
${fileDirname}               - 當前打開文件的目錄名                                     - /home/your-username/your-project/folder
${fileExtname}               - 當前打開的文件的擴展名                                   - ext
${cwd}                       - 任務運行器啟動時的當前工作目錄                                   
${lineNumber}                - 活動文件中當前選定的行號
${selectedText}              - 活動文件中當前選定的文本
${execPath}                  - 運行VS Code可執行文件的路徑
${defaultBuildTask}          - 默認生成任務的名稱
${pathSeparator}             - 操作系統用於分隔文件路徑中的組件的字符                      - / on macOS or linux, \\ on Windows
 

  

參考:


免責聲明!

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



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