在 VSCode 中配置 C/C++ 环境

为 Visual Studio Code 配置 C/C++ 环境

相较于其他 IDE ,VSCode 一直以轻量著称(点名批评某全家桶软件)。但由此带来的问题就是它一点也不像传统的 IDE,反而更像是一个能够调用编译器的 notepad:使用者甚至需要从语言环境开始配置。这也是劝退绝大多数人的原因之一。

区别于绝大多数能文章,本文提供的解决方案更为简单粗暴。你不需要思考它的来由,也不存在太多自由发挥的空间——你只需要照着做就行了。

依照本文介绍的方法完成全部的配置大致只需要半小时左右。在配置完毕之后,稍微体验一下焕然一新的 VSCode,相信你将会沉浸于它的丝滑中无法自拔。

VSCode, Yes!

配置前的准备

安装 VSCode

VSCode官网 下载对应的安装包并安装。

准备编译器

笔者建议使用基于 Mingw-w64 的 WinLibs 工具链,你可以在 WinLibs.com 下载,或者从笔者提供的 北航云盘链接 下载1

对于有能力的同学,可以在 Mingw-w64官网 选择自己喜欢的工具链,也可以自己编译一个。

把下载好的压缩包解压到一个文件夹下,文件夹重命名为 mingw64(因为我的文件夹就叫这个名字,本文也会统一使用这个文件夹名,你也可以使用自己喜欢的名字)。

也就是说,最后你应该要有一个这样的文件夹:

1
2
3
4
5
6
7
mingw64
├─bin
├─include
├─lib
├─libexec
├─share
└─x86_64-w64-mingw32

把这个文件夹放到一个比较没有问题(也就是没有奇怪字符和中文)的目录下,比如 S 盘或者 C 盘的根目录下。这意味着当你在文件管理器打开 mingw64 这个文件夹的时候,下图的箭头所指的位置应该没有奇怪的字符和中文。

然后点击上图箭头所指的框框,会出现 mingw64 文件夹的路径,比如下图中蓝底白字的 S:\mingw64。在后边加上 \bin 变成 S:\mingw64\bin,记住(复制)这个路径。

请慎重选择路径,这个路径从现在开始再也不会、也不应该改变。

对于使用 Linux 操作系统的同学 sudo apt install 就行了。

配置编译环境

打开系统设置,如果不知道怎么打开就按下 Win + R,在弹出来的“运行”页面输入 ms-settings:wheel 并点击确定,

然后在顶部的搜索栏里输入“查看高级系统设置”,点击下方弹出来的选项。

在弹出的“系统属性”页面选择右下角的“环境变量”。

在弹出的“环境变量”页面中的上半部分“XXX的用户变量”(XXX是你的用户名)中找到 Path(没有就新建一个),点击编辑,新建一条,把 S:\mingw64\bin(注意这里替换成你自己的路径,比如 C:\mingw64\bin)这一串字符粘贴进去。

修改完还要再点三次 “确认”!

最后,按下 Win + R,在弹出来的“运行”页面输入 cmd 进入控制台,输入 gcc -v,如果得到一串以 gcc version 13.2.0 结尾的输出那么就说明你的编译环境配置成功了,如下图所示。

配置 VSCode

现在打开你安装好的 VSCode。如果不出意外,你看到的页面应该和下面的类似,不要着急。

现在让我们认识一下几个基本的图标,这些图标都在界面的左侧。

左上角第一个图标是资源管理器。对于 VSCode 而言,没有单个的代码文件,所有的代码文件都要有一个相应的工作文件夹对应,这样做的目的同学们可以在下学期的数据结构课程的大作业中加以体会。

总之,你必须要选择一个文件夹作为工作文件夹并在 VSCode 中打开,你可以点击下图中的“打开文件夹”,也可以在菜单栏的“文件”选项下打开。

比如我把一个名字为 Untitled-1.c 的文件放在了一个叫做 c 的文件夹下,那么这个时候我就应该选择这个叫做 c 的文件夹并打开。

打开后我们会看到左侧多出了许多文件,这些文件就是所打开的文件夹下的文件和文件夹,点击对应的文件就可以在 VSCode 中打开并编辑。当然,你也可以在资源管理器的栏目中通过右键新建文件或文件夹,这些操作都会被如实地体现在系统的资源管理器中。

在关闭 VSCode 时,VSCode 会记录你的修改与当前打开的文件夹,再次打开 VSCode 时会自动打开上次打开的文件夹,并且不会丢失忘记保存的修改。

注意到右下角的“时间线”了吗?你的每次保存都会被 VSCode 记录,通过点击时间线中的保存记录就可以查看当前文件过去的版本。妈妈再也不用担心我写错代码了!

如上图所示,现在我们编写了一个程序,我们该如何让他运行起来呢?

这时候我们选择左侧的第五个图标,这个图标是扩展程序,也是 VSCode 的精髓。现在让我们尝试安装几个拓展:

  • C/C++
  • C/C++ Themes
  • C/C++ Extension Pack
  • Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

最后一个拓展是汉化拓展,没有出现在截图中。

然后按照提示重启 VSCode。

这个时候使用 Linux 的同学可以跳过下面这一段。

这时候还不能运行代码(至少笔者不喜欢)。记得再上面的资源管理器的截图中的 .vscode 文件夹吗?现在你的工作文件夹中也新建一个(名字也是 .vscode),再在文件夹中新建两个文件,名字分别为 launch.json 与 tasks.json。

其中 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
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch", // 配置名称
"type": "cppdbg",
"request": "launch",
"program": "C:\\Windows\\System32\\cmd.exe",
"preLaunchTask": "C/C++: gcc.exe build active file", // 调试开始前执行的任务,我们在调试前要编译构建。与 tasks.json 的 label 名字要一样
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"&",
"echo.",
"&",
"pause"
],
"stopAtEntry": false, // 设为 true 时程序将暂停在程序入口处,相当于在 main 上打断点
"cwd": "${workspaceFolder}",// 调试程序时的工作目录,此处为源码文件所在目录
"environment": [], // 环境变量,这里设为空即可
"externalConsole": true, //使用单独的cmd窗口输出
"setupCommands": [
{
"description": "启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
}
]
}

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
29
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "gcc",
"args": [
"-fdiagnostics-color=always",
"-O3",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
"-Wall"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": ""
}
],
"version": "2.0.0"
}

对于 C++ 而言,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
29
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
"-O3",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
"-Wall"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": ""
}
],
"version": "2.0.0"
}

这里不对这两段代码进行解释,留给读者自行探索。

最后选中我们要运行的代码,按下键盘上的 F5 或者右上角的三角形图标即可。

和 Dev-C++ 一样,VSCode 会在编译的时候自动保存代码。断点调试的方法和其他的 IDE 大致相同,在这里不多赘述。

一些推荐的拓展

  1. Error Lens

    可以将警告与报错信息直接显示在行尾。

  2. Background(注意是图标为 VS 的拓展)

    可以修改 VSCode 的背景。

1. 包含 GCC 13.2.0 (with POSIX threads) + LLVM/Clang/LLD/LLDB 17.0.5 + MinGW-w64 11.0.1 (UCRT)