Linux Mint下使用vscode編譯C++代碼
vscode
首先要説明vscode不是IDE,因此本身沒有所謂的一鍵配置、一鍵編譯/運行、大量可視化項目操作選項等功能,實際上是一個擁有豐富插件且可定製化極高的文本編輯器。當我們創建完C++文件後按照在IDE(VS2022等)思路下會下意識的使用快捷鍵一鍵編譯運行,這時vscode提示你要提供launch.json和tasks.json,這兩個文件就是vscode編譯C++代碼時所要用到的配置文件。當然如果你只是將vscode當作一個文本編輯器,並依然使用終端命令來編譯、調試與運行,也是可以的。
tasks.json
{
//一個簡單的tasks.json示例
"version": "2.0.0",
"tasks": [
{
"label": "C/C++: g++ build active file", // 任務名稱
"type": "cppbuild", // 任務類型
"command": "/usr/bin/g++", // 執行的編譯命令,如果編譯器加入了環境變量可直接g++
"args": [ // 命令參數
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": {
"kind": "build", // 任務分組類型
"isDefault": true // 是否為默認任務
},
"problemMatcher": [
"$gcc"
], // 錯誤匹配器
"detail": "Generated by VS Code." // 任務描述
}
]
}
值得一提的是vscode默認是不包含tasks.json的,如果直接編譯運行的話仍然提示要提供launch.json
launch.json
{
//一個簡單的launch.json
"configurations": [
{
"name": "(gdb) 啓動",
"type": "cppdbg", //指定的調試器類型
"request": "launch", //調試運行
"preLaunchTask": "C/C++: g++ build active file", //如果要求先生成文件再運行時,需要加上這個參數,參數值要和tasks.json中的"label"一致
"program": "${workspaceFolder}/${fileBasenameNoExtension}", //運行的文件名也要與生成的文件名一致
"args": [],
"stopAtEntry": false, //為true表示在運行的第一行代碼處停止,為false表示在斷點處停止
"cwd": "${fileDirname}", //工作目錄
"environment": [], //設置調試的環境變量
"externalConsole": false, //使用外置終端,還是vscode內部終端
"MIMode": "gdb", //指定的調試器,如果環境變量沒有調試器的目錄,需要加上參數"miDebuggerPath",值為調試器的目錄
"setupCommands": [ //調試器內部命令
{
"description": "為 gdb 啓用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "將反彙編風格設置為 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
當兩個配置文件都編寫完畢後,將其放入.vscode文件夾中,然後回到C++代碼中即可正常編譯、調試與運行。關於tasks.json和tasks.json其他高級命令與用法可參考微軟vscode官方文檔。