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终端中文乱码问题。
|