Visual Studio Code 配置 C/C++ 环境指南

本文介绍了 VSCode 配置 C/C++ 环境的方法与注意事项。

写在前面

Visual Studio Code(以下简称 VSCode)是一个运行于 Mac OS X、Windows 和 Linux 之上的,针对于编写现代 Web 和云应用的 跨平台源代码编辑器。

该编辑器集成了所有一款现代编辑器所应该具备的特性,包括「语法高亮(syntax high lighting)」,「可定制的热键绑定(customizable keyboard bindings)」,「括号匹配(bracket matching)」以及「代码片段收集(snippets)」。同时这款编辑器也拥有对 Git 的开箱即用的支持。

VSCode 如此优秀,以至于我这个算法竞赛选手也被它的轻量、简洁与优美深深吸引。在算法竞赛中,C++ 是每一个选手必须掌握的编程语言。因此我今天特地写了这篇文章来介绍一下如何配置 VSCode 的 C/C++环境。

准备

本次教程使用 Windows 10 系统,VSCode 版本为 1.51。

安装 VSCode

下载地址

安装插件

点击左侧 Extensions 进入应用商店,搜索 C/C++。

选择第一个候选项(左上角有星标),安装。

此时可以顺手安装一个中文插件,插件名 Chinese (Simplified) Language Pack for Visual Studio Code

安装编译/调试环境

VSCode 是一款编辑器而非 IDE(集成开发环境),所以想要 VSCode 能够编译或调试 C++ 程序,需要我们本地有环境才行。

如果你本地已经有了 C++ 环境,如电脑中已经安装了 Dev-Cpp 或 Code::Blocks 等软件可跳过该步,直接跳转到下一步配置系统环境变量

本文推荐安装环境为 TDM-GCC,TDM-GCC 目前的最新版本基于 GCC 9.2.0(已经停止开发的 Dev-Cpp 的最新的 5.11 版本则是基于 GCC 4.9.2)。

配置系统环境变量

光有环境还不够,我们需要能够通过命令行调用 g++ 才行,所以需要配置环境变量。

TDM-GCC 可以自动配置环境变量,只需要在安装的时候注意勾选即可。

注意 Dev-Cpp 和 Code::Blocks 都是基于 MinGW 的,命令行调用 MinGW 时路径不能有中文。所以如果是基于 MinGW 环境进行编译/调试,则需要编译器路径和编译文件路径都不能有中文(注意这里的路径不仅仅指文件所在的各级文件夹名,也指文件的文件名)。

具体如何配置环境可以自行百度。

检验系统环境变量是否配置成功,可以在命令行窗口中键入 g++ --version 并回车。如果显示能够显示 g++ 的版本信息就说明配置成功了,否则如果显示 g++: command not found 则说明还没配置成功。

打开命令行方式有很多,下面列举几种:

  1. win + r 打开「运行」窗口,键入 cmd 并回车,即可打开 Windows 的命令行窗口;

  2. 在 VSCode 界面中按 Ctrl + ~ 打开终端;

  3. 直接打开 Git Bash。

注意:每次检验系统环境变量是否配置成功需要重新启动一次终端。因为终端只在启动时读取一次环境变量,后续修改环境变量不会对当前终端产生影响。

配置完环境变量最好重启一下 VSCode,以确保环境变量生效。

VSCode 编译/调试 C/C++ 程序是基于命令行的,在 VSCode 的下方有一个命令行界面,如果修改了环境变量,该命令行也同样需要重启。重启 VSCode 或者直接关闭当前 VSCode 使用的终端均可以达到效果。

添加/修改 VSCode 调试配置文件

VSCode 的调试需要在打开的文件夹中进行(因为 VSCode 会生成一个该文件夹的配置文件),而不能像 Dev-Cpp 直接编译或调试单文件。所以我推荐建立一个你自己的代码文件夹,以后调试就在这个文件夹中进行。

如果是基于 MinGW 环境进行编译/调试,则需要编译器路径和编译文件路径都不能有中文。

在 VSCode 中依次点击「文件」和「打开文件夹」,即可打开文件夹。

新建一个后缀名为 .cpp 的文件,如 test.cpp,键入一段简单的 C/C++ 代码,例如:

1
2
3
4
5
6
7
8
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}

此时按调试快捷键 F5,会提示你选择环境,选择 C++(GDB/LLCB),此时会提示你再选择一个配置,选择 g++.exe build active file

此时将新建的 launch.json 文件的内容替换为如下文本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
"version": "0.2.0",
"configurations": [
{
"name": "(GDB) Launch & Pause",
"type": "cppdbg",
"request": "launch",
"preLaunchTask": "g++",
"program": "C:/WINDOWS/system32/cmd.exe",
"args": [
"/C",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"&",
"pause"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/TDM-GCC-64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(GDB) Launch",
"type": "cppdbg",
"request": "launch",
"preLaunchTask": "g++",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/TDM-GCC-64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

注意配置文件中 "miDebuggerPath"字段的值为应为你选择的环境的路径,如果是 TDM-GCC 则无需修改,否则需要你修改为实际路径。

此时在 test.cpp 的代码页按 F5,会提示你 找不到任务“g++”,选择 配置任务

点击 使用模板创建 tasks.json 文件,然后选择 Others

此时将新建的 tasks.json 内容替换为如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"version": "2.0.0",
"command": "g++",
"args": [
"-Wfatal-errors",
"-Wextra",
"-Wall",
"${relativeFile}",
"-std=${config:C_Cpp.default.cppStandard}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}

然后按 Ctrl + Shift + P,键入 Open Settings (JSON),选择第一项,打开 settings.json 文件,在其中加入字段 "C_Cpp.default.cppStandard": "c++11"

要注意在本行尾或上一行尾加入一个逗号,以保证字段间用逗号隔开。如果没有其他字段,就不需要加逗号了。

如果有些同学发现自己的头文件部分有下划线,此时需要添加配置文件:c_cpp_properties.json。按下 Ctrl + Shift + P,键入 C/C++:Edit Configurations(JSON),将中的 "compilerPath" 字段的值改为你所设置的环境即可。

此时回到代码页面,按 F5。弹出了 cmd 窗口。键入 1 2,在第二行出现了 3,说明配置成功!

注意事项

本文介绍的配置支持程序运行结束后等待用户按下任意键再关闭窗口。如需要此功能,请在调试时选择配置:(GDB) Launch & Pause。如不需要,请选择配置:(GDB) Launch

本文中配置的 C++ 标准默认为 C++11,如果需要更改,只需要修改 settings.json 文件中的 "C_Cpp.default.cppStandard" 字段的值为你所需要的标准即可。