
vscode配置C++环境教程
前言
vscode是一款轻量代码编辑器。相比vs,具有体积小、运行快等优点,尤其适合用来进行C / C++的入门练习与开发。但不少入门C / C++的新手会觉得配置vscode是一件麻烦的事,而且网上的教程要么质量参差不齐,要么过程较为繁琐。本文就来教一下大家如何快速在vscode上配置C++开发环境。
1. 前期准备
1.1. 安装vscode
1.2. 下载MinGW64,并配置好环境变量,如下图所示
1.3. 在vscode的插件商店中搜索C/C++,安装如下插件
备注:很多教程都说要安装code runner,但其实根本不需要!!!
2. 基础配置
前期准备工作完成后,接下来就是正式配置的时间了。
2.1. 新建文件夹(这里名为test),在vscode中打开该文件夹,注意文件夹的路径不能出现中文
2.2. 在vscode中新建一个C++文件(这里名为test.cpp),随便写点输出的内容,如下图所示
2.3. 点击F5运行,分别选择“C++(GDB/LDB)”和“g++生成和调试活动文件”,这时一定会出现如下报错。点击红框区域,打开launch.json文件。
2.4. 可见在launch.json文件中,configurations配置项为一个空数组,说明还没添加任何配置。点击Add Configuration添加配置项,选择“C/C++:(gdb)启动”,如下图所示。
2.5. 添加配置项后,launch.json文件如下图所示。注意:preLaunchTask为手动添加,不是自动生成的!这里简要解释几个参数。
program:代表生成的可执行文件的文件名。在这个示例中,最终会生成a.exe。
externalConsole:是否使用额外的黑窗口对程序进行调试。若为true,则程序运行时会弹出黑框框;否则会直接在vscode下方的内置控制台进行输出。
miDebuggerPath:gdb.exe文件所在的位置。
preLaunchTask:执行launch.json文件前,应该执行的任务。它的值要和task.json文件中,label项的值一致。(task.json会在后面进行解释)
2.6. 修改launch.json文件如下(红框表示要修改的内容):
2.7. 打开task.json文件(注意左侧的文件栏,生成了一个.vscode的文件夹,里面包含了launch.json和task.json文件),修改配置项如下(task.json文件中,红框内为要修改的内容):
简要解释几个参数:
command:表示g++.exe文件所在的位置
label:任务的名称。这里的值要跟launch.json中,preLaunchTask配置项的值一致
args:编译C++程序时,需要携带的参数
2.8. 重新回到test.cpp,点击F5运行。这时就可以运行成功了,控制台输出了Hello World!。
至此,基础配置就全部完成了。是不是很简单(doge)
3. 进阶配置
完成基础配置后,其实已经可以进行简单的C/C++代码编写练习了。对于单文件的C/C++程序完全够用。这里的进阶配置,是进一步的优化方案。
3.1. 使用环境变量,简化配置项
前面说到,下载好MinGW64后,要配置环境变量,在这一步会发挥重要作用。
打开launch.json和task.json,观察下面的红框部分:
可以发现,在gdb.exe文件和g++.exe文件所在的位置中,有共同的前缀:E:\MinGW64。而这恰好是环境变量GCC_HOME的值!(见步骤1.2的图)
根据官方文档,可以将路径修改为如下形式,充分利用环境变量:
这样做的好处是:当路径嵌套很深的时候,不用一步步费劲地翻找;当g++和gdb的位置发生变化时,只需要修改环境变量的值。
3.2. 配置文件输入输出:
这个需求主要见于竞赛选手,因为可以减少每一次手动输入样例的时间。
3.2.1. 在左侧文件夹栏新建in.in和out.out两个文件(其实也可以建为txt文件,这里是方便OI选手)。通过拖拽形成如下布局:
3.2.2. 修改test.cpp如下:
解释一下红框部分的意思:如果定义了一个名为LOCAL的宏,则执行ifdef和endif之间的内容,即从文件in.in中读取内容到标准输入流,将标准输出流中的内容写入out.out文件。
3.2.3. 打开task.json,在args配置项中增加如下内容:
这里表示编译生成可执行文件时,在命令中定义一个名为LOCAL的宏("-D"后面的内容表示宏),而这恰好可以让文件输入输出生效。在比赛环境中,由于没有定义这个宏,所以文件重定向不会生效,一切输入输出自动转换为标准输入输出。这样做的一个巨大好处是:避免因为提交代码时,忘记删除文件重定向语句而发生错误。
3.2.4. 重新回到test.cpp,按F5运行,可以看见文件输入输出生效。简直不要太炫酷(doge)!
3.3. 工程环境配置
安装CMake及其插件。不过由于本人对C/C++工程化开发不太熟悉,所以先挖个坑,后面再补充^_^
有不对的地方,欢迎各位批评指正!
