1.基础软件安装
-
安装Visual Studio Code.
-
安装C++拓展。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。
-
确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令以检验是否已安装gcc。
gcc -v
如果能够正确打印出当前gcc的版本信息,则表示已经预装。若没有预装,则用如下命令安装安装 GNU 编译器工具和 GDB 调试器:
sudo apt update # 更新软件包源
sudo apt-get install build-essential gdb
后续vscode找不到命令 g++配置等内容,需要使用上述命令安装gdb
2. 环境配置
通过终端创建一个名为project的文件夹以保存我们的VSCode项目,项目的配置文件位于.vscode文件夹下。在后续教程中,将具体说明在vscode中如何操作生成.vscode 文件夹下的三个配置文件:
tasks.json (compiler build settings) ,负责编译
launch.json (debugger settings),负责调试
c_cpp_properties.json (compiler path and IntelliSense settings),负责更改路径等设置
2.1. 源代码 helloworld.cpp
新建文件helloworld.cpp
在helloworld.cpp粘贴如下代码并保存(Ctrl+S),在vscode左侧栏的Explorer视图中可以看到新建的文件helloworld.cpp。
#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};for (const string& word : msg){cout << word << " ";}cout << endl;
}
2.2. 编译 Build helloworld.cpp
创建 tasks.json
在.vscode下创建tasks.json文件,它的作用是告诉 VS Code 如何构建(编译)程序,将调用 g++编译器从源代码创建一个可执行文件。 在上方的主菜单中,选择 终端>运行任务 (Terminal>Configure Default Build Task) ,将出现一个下拉菜单,显示 C++ 编译器的各种预定义编译任务。选择如下。
上述操作将自动在.vscode文件夹下生成tasks.json文件。当然也可以在Explorer视图中新建文件,将下面代码复制进去,手动生成tasks.json,教程后面的配置文件也均可这样生成。其中代码类似如下:
{"tasks": [{"type": "cppbuild","label": "C/C++: g++ 生成活动文件","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"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++ 的命令行参数(必须按照编译器预期的顺序指定)。“ f i l e " 表示当前打开的待编译的活动文件,对它进行编译,并在当前路径 {file}"表示当前打开的待编译的活动文件,对它进行编译,并在当前路径 file"表示当前打开的待编译的活动文件,对它进行编译,并在当前路径{fileDirname}生成与活动文件同名无后缀的可执行文件” f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}"。在本案例中活动文件指helloworld.cpp,所生成的可执行文件为helloworld。
label: 标签值是将在任务列表中看到的内容;可以随意命名它。
group中的isDefault: 值为true表示支持通过快捷键ctrl+shift+B来执行该编译任务。如果值改为false,也可以从菜单中选择运行: 终端>运行生成任务 (Terminal>Run Build Task。)
执行编译
- 回到活动文件helloworld.cpp
- 执行tasks.json中定义的编译任务。快捷键ctrl+shift+B或者从菜单中选择运行:终端>运行生成任务(Terminal>Run Build Task)。
- 任务开始时,源代码编辑器下方将出现集成终端面板。任务执行完成后,终端会显示编译结果,对于成功的 g++编译,输出类似如下:
- 如下图,点击+按钮将创建一个以当前工作目录(本案例中是helloworld)默认运行的shell终端。输入指令ls查看当前目录下所有文件,可以看到编译生成的可执行文件helloword。
5.终端中输入 ./helloworld ,即可运行可执行文件helloworld
修改tasks.json
可以修改 tasks.json来满足一些特定需求。比如 将" f i l e " 替换“ {file}"替换“ file"替换“{workspaceFolder}/*.cpp”来构建多个 C++ 文件; 将“ f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}”替换为硬编码文件名(如“helloworld.out”)来修改输出文件名。
2.3 调试Debug helloworld.cpp
创建launch.json
launch.json 文件用于在 Visual Studio Code 中配置调试器。接下来将创建launch.json 文件。
从主菜单中,选择 运行 > 添加配置…( Run > Add Configuration…),选择C++ (GDB/LLDB)。 之后将看到展示各种预定义调试配置的下拉列表,选择如下。将自动生成launch.json文件。
在编辑器中打开launch.json,具体内容类似如下:
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}
launch.json中部分关键字说明:
program: 指带调试的程序,其值对应程序的路径。在这里设置为" f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}",在本案例中对应“helloworld/helloworld”.
stopAtEntry: 默认情况下,C++拓展不会向源代码添加任何断点,stopAtEntry 值设置为 false。 将stopAtEntry值更改为 true 将使调试器在开始调试时停止在 main 方法上。
3、C/C++ 配置
如果你想更多地控制 C/C++ 扩展,你可以创建一个 c_cpp_properties.json 文件,它允许你更改设置,例如编译器的路径、包含路径、C++ 标准(默认为 C++17),等等。 您可以通过从命令面板 (Ctrl+Shift+P) 运行命令 C/C++: Edit Configurations (UI) 来查看 C/C++ 配置 UI。
如果您的程序包含不在您的工作区或标准库路径中的头文件,您只需要修改包含路径Include path 设置。Visual Studio Code 将这些设置放在.vscode/c_cpp_properties.json 中。如果您直接打开该文件,它应该如下所示:
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}
【工程环境】利用VSCode + CMakeList完成C/C++项目工程搭建_vscode创建c++项目-CSDN博客
详解Linux下使用vscode编译运行和调试C/C++ - 知乎 (zhihu.com)