Visual Studio Code搭建C语言"集成"开发环境
VSCode是微软一个基于Electron框架开发的新一代开源代码编辑器。之前我们在讲述C语言的时候,都是将其定位成为一个代码编辑器来使用的。使用其内嵌的Windows power shell当作命令行终端来执行MinGW的便宜命令,这种方式虽然比较麻烦,但是其开发的过程和方法最大地逼近了Linux下C语言的开发,因此,我们在之前的C语言讲述过程中,选择使用了这种开发方式。但是,这种方式随着你代码的复杂度提升,如果使用gdb工具去做代码的调试,其实是很不方便的,因为命令行为主的操作方式永远都比不过图形化界面来的方便。
本文的内容,将会讲述如何使用VSCode来配置MinGW工具,以达到配置出一个可以直接编译和调试代码的C语言开发环境。
MinGW的安装
公众号回复“GCC“即可获取MinGW的下载链接。
使用过程很简单,只需要将我们的软件包解压,放到一个特定的位置,如图1所示。
图1 MinGW文件夹
以上的文件夹里面,bin文件夹存放了所有的GCC相关可执行文件,因此我们需要将其添加到环境变量里面。右击“计算机“->”属性”->”高级系统设置”,在弹出的窗口里面选择”高级“标签,再点击”环境变量“,如图2所示。
图2 打开环境变量
然后点击“新建“,输入刚刚MinGW的路径,记住这里需要把路径定位到bin文件夹里面,即输入” C:\MinGW64\bin\“。如图3所示。然后依次点击”确定“退出。
图3 添加环境变量
完成上述操作后,来测试一下环境变量是否添加成功。点击“开始“菜单,输入”cmd“打开”命令操作符“,输入”gcc -v“如果设置都正确,”命令操作符“会输出gcc的版本号,如图4所示。
图4 gcc安装完成
VSCode安装
VSCode文本编辑器选用的是当下最火的开源软件,微软出品的“visual studio code”,这是一个微软出品的开源跨平台文本编辑器。下载链接:https://code.visualstudio.com/Download。这个编辑软件下载下来,下载界面如图5所示,注意下载的时候,选择“Userinstaller”,然后根据自己电脑的操作系统进行下载。下载完成之后,按照安装向导进行安装,安装路径可以自己随意指定。
图5 Visualstudio code下载界面
下载完成之后,默认在桌面上是不会出现快捷方式的,因此需要在搜索菜单里面找到“visual studio code”软件打开,如图6所示。软件的打开界面如图7所示。
图6 打开Visual studio code
图7 Visualstudio code软件界面
配置VSCode
首先,我们先创建一个文件夹,用以存放我们的代码,假设我们需要创建的一个文件夹名称为“NumCal”,其位置就位于桌面上。然后我们直接使用VSCode来打开这个文件夹,如图8所示。
图8 VSCode打开文件夹
打开完成文件夹之后,我们就可以在里面创建.c文件并且编写一些代码了,假设我们在这里先创建一个“main.c”的源文件,然后编写几行很简单的代码,如,判断一个输入的数值大小,如果输入的数值在1~100之间就输出“Small”,如果在101~200之间就输出“Middle”,其余情况都输出“Large”,这个代码如图9所示。
图9 数字判断代码
#include<stdio.h>
#include "a.h"
int main(void) {
int number;
printf("input:\n");
scanf("%d", &number);
if((number > 1) && (number <= 100)) {
printf("Small\n");
} else if((number > 101) && (number <= 200)) {
printf("Middle\n");
} else {
printf("Large\n");
}
return 0;
}
在这些操作都完成之后,我们现在先来试一下使用VSCode的调试功能,点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”。如图10所示。
图10 启动代码调试
此时,VSCode会弹出一个选项,让你选择合适的调试器,这里我们选择“C++(GDB/LLDB)”,如图11所示。
图11 调试器选择
本想着这一次操作可以开启我们使用VSCode的新世界,但是随即而来的是一桶刺骨的冷水,因为它弹出了如图12所示的这一个让人看不懂的界面,这个界面里的内容既像代码,又不像代码,如图12所示。
图12 弹出的看不懂的东西
细心的观众会发现,这一个类似于代码的东西,它好像是被自动生成且保存至本地的“.vscode”文件夹里面的。其实如果有做前端的童鞋就知道,这个json文件其实是一种类似于XML的轻型数据文件,本广泛地用以前端和服务器之间的数据交互。但是为什么VSCode里面也会有这个东西呢?这是由于VSCode是用Electron框架开发的,Election框架的核心编程语言是Node.js,Node.js可以简单地理解成一种可以运行在操作系统本地的,脱离浏览器环境的JavaScript,所以就不难理解,为何VSCode要用json文件来存储数据了。
图13 使用Electron框架,Node.js和Chrome V8引擎技术开发的VSCode
在了解完成launch.json是什么东西之后,我们就来说一下其作用。launch.json其实顾名思义就知道,它作用是在C语言文件启动调试时提供配置参数。这些参数具体有什么作用呢?它们的作用参考图14。
图14 launch.json文件配置内容注释
现在我们可以根据图14所示的注释,对launch.json文件中的内容进行完善。完善之后的代码如图15所示。
图15 修改好的launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "build and debug", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
// 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${fileDirname}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "D:/software/mingw64/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "gcc", // 这里需要添加一个参数,
//调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
此时,我们编辑好这个文件之后,再选择点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”。随之而来,一声悲怆的提示音,又给我们冰冷的内心吹了两三遍西北风。弹出的窗口如图16所示。
图16 弹出的错误
图16弹出的窗口,伤害性虽然不大,但是极具侮辱性极高,它使用我们每个都认识的汉字,给我们提示出了这个错误,原来是没有找到任务“gcc”啊。但问题是怎么去找gcc呢?首先先来解释,为什么会弹出这个错误,因为我们在配置launch.json文件的时候,选择了调试之前要先执行gcc任务,那么这个gcc任务到底是什么,VSCode不知道,因此提示我们需要配置。
在弹出的这个提示框上面,选择“配置任务”,随之而来会弹出一个选项,“使用模板创建task.json文件”,如图17所示。
图17 “使用模板创建task.json文件”
遇到这种情况,我们需要毫不犹豫地点下去。点下去之后,又弹出如图18所示的现象。
图18 MSBuild生成“task.json”
此时,我们直接选择第一项“MSBuild执行生成目标”。这时候,又弹出了一个json文件,这个json文件就是我们前面多次看到的那个“task.json”,此时我们又需要对这个文件再配置一次。配置文件的内容如图19所示。
图19 task.json文件
{
"version": "2.0.0",
"label": "C/C++: gcc.exe build active file",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "compiler: D:\\software\\mingw64\\bin\\gcc.exe",
}
至此为止,整个VSCode C语言调试已经配置完成了,接下来,我们可以返回main.c文件对其设置一些断点,设置完成之后,点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”,就可以进入C语言调试了。如图20所示。
图20 C语言调试界面