VS Code是一款微软出的轻量级编辑器,它本身只是一款文本编辑器而已,所有的功能都是以扩展的形式所存在,想用什么功能就安装对应的扩展即可,非常方便,同时也支持非常多的主题和图标,外观比较好看,重要的是VS Code支持各大主流操作系统,包括Windows、Linux和Mac OS。
在本教程中,你将 VS Code 配置为使用来自MinGW-w64的 GCC C++ 编译器 (g++) 和 GDB 调试器来创建在 Windows 上运行的程序。相关内容可参考VS Code官方文档:GCC on Windows。
注意:如果你并不想这么麻烦,可以直接安装扩展Code Runner ,该扩展右键即可编译运行单文件,很方便,但是有个缺点,就是无法Debug。
1 安装前的准备
在 VS Code 官网进行下载并进行安装在这里就补多说了,首先说明一下VS Code只是一个纯文本编辑器(editor),并不是IDE(集成开发环境),不含编译器(compiler)和许多其它功能,所以在这里我们要先安装C/C++相关编译器。
1.1 安装MinGW-w64
首先打开 MinGW-w64 的官网,找到 Downloads 页面,在 Sources 处点击 SourceForge跳转到资源目录,见下图 向下翻,不要下载 MinGW-W64-install.exe,这个是在线下载安装包,容易失败,不推荐通过此种方式下载,最好下载最新版本的x86_64-posix-seh ,下载之后是一个.7z 格式的压缩包,将文件夹解压出来,放到一个不容易被删的地方。
1.2 配置环境变量
1.2.1 配置
右键此电脑 ,选属性 ,点击高级系统设置 ,选择高级 这栏,点击环境变量 ,在系统变量处,选择Path,点击编辑,新建,将你的MinGW-w64下bin目录 路径填进去,例如我的路径就是D:\Develop\mingw64\bin ,设置好之后,一路确定就行。
1.2.2 验证
按Win+R,运行cmd,打开cmd终端,输入gcc,配置正确应该会提示 gcc: fatal error: no input files ,否则会出现**‘gcc’ 不是内部或外部命令,也不是可运行的程序或批处理文件**,这种情况说明gcc所在文件夹并没有在环境变量的Path中,请核查。
1.3 安装扩展(Extension)
2 添加配置文件
首先,为避免以后每次调试程序都要重新配置,我们先创建一个专门存放代码的地方,在这里我们称之为代码文件夹,路径不能含有中文和引号,最好不要有空格,以后可以将所有的代码放在这个文件夹里进行调试。
用 VS Code 打开代码文件夹,在这个文件夹下面创建一个.vscode 文件夹,并在这个文件下创建两个配置文件:launch.json ,tasks.json ,注意这两个文件是在.vscode 文件夹里面的。
2.1 tasks.json文件
创建一个tasks.json 文件来告诉 VS Code 如何构建(编译)程序。此任务将调用 g++ 编译器以基于源代码创建可执行文件。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "Compile",
"command": "D:\\Develop\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"panel": "new",
"focus": true,
"showReuseMessage": true
}
}
]
}
2.2 launch.json文件
创建一个launch.json 文件来配置 VS Code,以便在按F5调试程序时启动 GDB 调试器。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Develop\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "Compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
注意:如果externalConsole 设置的是true ,这是配置的外部终端。这样的话,如果代码不加任何断点,按F5以后黑框一闪而过属于正常现象。可以设置externalConsole 为false 使用内部终端进行调试,当然如果你非要使用外部终端,那么想让程序暂停运行有如下方法:
- 可以在末尾加上一个或两个
getchar(); - 用
system("pause") (这个需要添加头文件windows.h ) - 添加断点
3 总结
-
在launch.json 中如果设置externalConsole 为true ,那么将使用的是外部终端,将会打开一个黑框进行运行,其中大部分情况中文将会乱码。上面有说到,在tasks.json 中添加-fexec-charset=GBK 参数可将其设置为GBK编码,即可解决中文乱码问题,但是如果externalConsole 设置为false ,那么就要将-fexec-charset=GBK 参数注释或删除掉。 -
如果不是特别大的需求,Code Runner扩展基本上可以解决大部分需求 -
Code Runner默认运行是在输出端,是不能进行编辑输入的,所以我们要将其改到终端运行,打开VS Code设置,找到Run In Terminal配置处,将其勾选住,也可在设置的配置文件settings.json 文件里添加"code-runner.runInTerminal": true 配置,保存,我们再通过Code Runner运行,就可以在终端中运行了,可以在上面进行输入了。 -
关于终端中文乱码问题,可以参考我的另一篇文章永久解决VS Code终端中文乱码问题。
|