vscode是文本編輯而非集成開發環境,需要經過配置才能在其上編譯執行代碼。本教程將具體詳解在linux上配置Visual Studio Code使用GCC C++ 編譯器(g++)和GDB調試器的方法(GCC是GNU 編譯器集合,GDB則是 GNU調試器)。 配置vscode后,將通過在VSCode中編譯和調試一個簡單的 C++程序告知您具體該如何操作。
一、先決條件
- 安裝Visual Studio Code.
- 安裝C++拓展。點擊在vscode界面最左側的Extensions圖標(打開快捷鍵:ctrl+shift+X),搜索“C/C++”,點擊進行安裝。(所有三個c/c++相關的全部安裝)
檢查是否安裝了gcc編譯器(終端輸入gcc -v)如果能夠正確打印出當前gcc的版本信息,則表示已經預裝。若沒有預裝,則用如下命令安裝安裝 GNU 編譯器工具和 GDB 調試器:
sudo apt update # 更新軟件包源
sudo apt-get install build-essential gdb
二、配置相應環境
項目的配置文件位于.vscode文件夾下。在后續教程中,將具體說明在vscode中如何操作生成.vscode 文件夾下的三個配置文件:
tasks.json (compiler build settings) ,負責編譯
launch.json (debugger settings),負責調試
c_cpp_properties.json (compiler path and IntelliSense settings),負責更改路徑等設置
當然,也可以直接復制配置文件中的內容,以新建文件的方式生成配置文件。后續會對文件中的一些重要關鍵字進行解讀,了解配置文件中內容的具體作用。
2.1 編譯 Build
創建 tasks.json
在.vscode下創建tasks.json文件,它的作用是告訴 VS Code 如何構建(編譯)程序,將調用 g++編譯器從源代碼創建一個可執行文件。 在上方的主菜單中,選擇?Terminal>Configure Default Build Task?,將出現一個下拉菜單,顯示 C++ 編譯器的各種預定義編譯任務。選擇?C/C++: g++ build active file。
上述操作將自動在.vscode文件夾下生成tasks.json文件。當然也可以在Explorer視圖中新建文件,將下面代碼復制進去,手動生成tasks.json,教程后面的配置文件也均可這樣生成。其中代碼類似如下:
{"tasks": [{"type": "cppbuild","label": "C/C++: g++ build active file","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g",// "${file}","${workspaceFolder}/*.cpp","-o","${fileDirname}/a.out"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "調試器生成的任務。"},],"version": "2.0.0"
}
注: VScode支持使用 ${variableName} 語法在配置文件中實現鍵值字符串的變量替換。tasks.json及后面為調試創建的launch.json文件中變量的具體說明可參考variable reference.
tasks.json中部分關鍵字說明:
command:?要運行的程序,此處是g++。
args: args 數組包含將傳遞給 g++ 的命令行參數(必須按照編譯器預期的順序指定)。"${file}"表示當前打開的待編譯的活動文件,對它進行編譯,并在當前路徑${fileDirname}生成與活動文件同名無后綴的可執行文件"${fileDirname}/${fileBasenameNoExtension}"。在本案例中活動文件指helloworld.cpp,所生成的可執行文件為helloworld。
label:?標簽值是將在任務列表中看到的內容;可以隨意命名它。
group中的isDefault: 值為true表示支持通過快捷鍵ctrl+shift+B來執行該編譯任務。如果值改為false,也可以從菜單中選擇運行:Terminal>Run Build Task。
修改tasks.json
可以修改 tasks.json來滿足一些特定需求。比如 將"${file}"替換“${workspaceFolder}/*.cpp”來構建多個 C++ 文件; 將“${fileDirname}/${fileBasenameNoExtension}”替換為硬編碼文件名(如“helloworld.out”)來修改輸出文件名。
2.3 調試Debug
創建launch.json
launch.json 文件用于在 Visual Studio Code 中配置調試器。接下來將創建launch.json 文件。
從主菜單中,選擇?Run > Add Configuration...,選擇C++ (GDB/LLDB)。 之后將看到展示各種預定義調試配置的下拉列表,選擇?g++ build and debug active file。將自動生成launch.json文件。
在編輯器中打開launch.json,具體內容類似如下:
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++ - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/a.out","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ build active file","miDebuggerPath": "/usr/bin/gdb"}]
}
這里千萬要確保task.json中的“-o”參數與launch.json中的program參數相同
task.json中的“label”參數與launch.json中的preLaunchTask參數相同
下面自己就可以寫一個hello world程序玩玩啦!