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
參考: