精选

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++工程化开发不太熟悉,所以先挖个坑,后面再补充^_^


有不对的地方,欢迎各位批评指正!

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
晨曦
作者分享
#软考# 拿下![耶][机智]
13
闲聊 #蓝桥杯# 国赛寄了,只有国优[裂开]
10
闲聊 里程碑 #蓝桥杯# 2024年4月29日,第十五届蓝桥杯成绩公布,喜提C/C 研究生组广东省一等奖,进入国赛![得意][嘿哈][机智]
27
#求职# 帮同学转发的校招信息 据说这个部门的hc比现在过简历的人还多[呲牙] 欢迎各位鱼友投递[勾引](要求研究生学历)
18
#半年总结与计划# 2023年快要过去一半了,先对过去的半年做一个小小的总结,再对下半年做一个小小的计划。 2023年上半年,我所做的事情十分有限: 1月,忙于导师的项目; 2月,主要用来准备英语六级,同时保证完成导师项目的任务; 3月,英语六级冲刺(最后考了623),导师项目结题; 4月,尝试做毕设的代码部分,最后发现完全不可行,根本做不出来; 5月,硬写毕业论文,完成预备党员转正; 6月,完成毕业答辩,拍毕业照,参加毕业晚会,以及处理其他与毕业相关的琐事; 2023年下半年的计划如下: 1、参加鲲鹏创新大赛(7-8月)。 2、看完《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=深入理解计算机系统》和《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=数据库系统概念》。 3、学习C 11工程级应用。 4、每天坚持看行测进行积累。 如果翻看我所做的2023年上半年计划(链接:https://wx.zsxq.com/dweb2/index/topic_detail/814848111452842),就会发现我一项计划也没有完成(doge)。任务繁多是一方面,但主要是我已经不太想继续去卷了。我学习了一些中医知识,发现自己的身体损耗得有些厉害,最典型的表现就是头顶的头发已经非常稀疏了(阳气过度损耗)。我觉得自己已经卷不动了,需要慢下来进行调整。 我想要安稳的生活,不喜欢所谓的拥抱变化,更不喜欢被各种kpi和okr弄得提心吊胆,并讨厌写各种周报和月报(现在导师就要求写这两个东西)。所以,我未来的首要目标就是考公。因此,我现在就要开始慢慢地去了解相关的知识,减轻以后的备考压力。 但又因为我要继续读研,所以相关的专业知识还需要坚持学习,而且在研二暑假需要找一份实习进行兜底,充实简历,这样即使考公失败也不会过于被动。我的学习思路是结合自己所选的研究生方向(数据库底层开发),将基础知识学扎实,并结合导师接的合作项目进行技术积累。 这个暑假我向导师申请了回家调养身体,导师也同意了。9月我将正式进入研一,又要开启一段新的学习之旅了。 希望一切顺利[玫瑰]
23
下载 APP