VSCode搭建C/C++开发环境【Windows】

VSCode搭建C/C++开发环境

  • 1. 配置C/C++开发环境
    • 1.1 下载和配置MinGW-w64编译器套件
    • 1.2 安装C/C++插件
  • 2. 在VSCode上编写C语言代码,并编译执行
    • 2.1 先打开一个文件夹,写一份C语言代码
    • 2.2 设置C/C++编译的选项:c_cpp_properties.json
    • 2.3 创建执行任务:tasks.json
    • 2.4 执行
    • 2.5 复用配置文件
  • 3. 一个工程中有多个.c文件需要编译怎么办?
  • 4. 如何编译C++源文件?
  • 5. VSCode的调试


1. 配置C/C++开发环境


1.1 下载和配置MinGW-w64编译器套件


VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须有编译器使用。为了方便,我们就使用MinGW-w64MinGW-w64移植到windows平台的一个gcc编译器。

1. 下载

  • 下载地址:https://sourceforge.net/projects/mingw-w64/files/
    在这里插入图片描述

  • 将下载后得到的文件解压缩,得到一个文件夹。我们点进入,发现里面还有一个文件夹mingw64
    在这里插入图片描述

  • 接下来将这个文件夹放在一个方便管理的地方,建议放在C盘或D盘的根目录下。
    在这里插入图片描述

  • 此时mingw64的编译器路径就是C:\mingw64
    在这里插入图片描述

2. 配置

  • 在windows电脑上,按win + s快捷键,打开快捷框,在搜索框中搜索:环境变量。
    在这里插入图片描述
  • 进入系统属性,点击环境变量:
    在这里插入图片描述
  • 进入环境变量管理页面:
    在这里插入图片描述
  • 新加一个环境变量值,我们前面已经将mingw64拷贝到C:\mingw64目录下了,在这个目录下有一个bin的文件夹,这个文件夹下是gcc等编译器的可执行文件,所以我们将:C:\mingw64\bin添加到path的环境变量中,点击确定。
    在这里插入图片描述
  • 验证一下:在windows电脑上打开cmd窗口,输入:gcc --version或者where gcc,要是能看到下面的界面,就说明MinGW-w64的编译器套件已经配置好了。
    在这里插入图片描述

1.2 安装C/C++插件


要在VSCode上编译代码,还需要配置C/C++插件,在VSCode的插件中搜索:C/C++,点击安装。(我这里已经下载好了)

在这里插入图片描述

安装好后要重启VSCode,让之前的设置生效。


2. 在VSCode上编写C语言代码,并编译执行


2.1 先打开一个文件夹,写一份C语言代码


在D盘中创建一个文件夹,打开它。

在这里插入图片描述

编写一份测试用的C语言代码:

在这里插入图片描述


2.2 设置C/C++编译的选项:c_cpp_properties.json


鼠标点在.c的源文件内部,按ctrl+shift+p快捷键,在弹出的界面中选择:【C/C++:编辑配置(UI)】,然后进入设置页面。

在这里插入图片描述

配置【编译器路径】为你安装的MingGW-64目录下的gcc。

在这里插入图片描述

更改智能提示模式:

在这里插入图片描述

配置完成后,我们可以看到多了一个c_cpp_properties.json文件,这里面其实就是各种配置信息。

在这里插入图片描述


2.3 创建执行任务:tasks.json


在终端中选择配置任务。

在这里插入图片描述

在弹出的页面中,选择【C/C++:gcc.exe 生成活动文件】

在这里插入图片描述

选择之后,会自动生成一个tasks.json文件,我们来大致看一下这个文件中的内容:

在这里插入图片描述

file就是指要编译的文件,fileDirname指当前文件夹,fileBasenameNoExtension翻译过来就是文件基础名无拓展,表示生成的可执行程序名称。如果编译的文件是test.c,生成的可执行程序就是test


2.4 执行


鼠标点在要执行的源文件中,在终端中点击【运行生成任务】:

在这里插入图片描述

选择C/C++:gcc.exe

在这里插入图片描述

如果执行成功,会看到:

在这里插入图片描述

生成了一个test.exe文件:

在这里插入图片描述

接下来我们运行它,按 ctr + ` 快捷键打开终端窗口,输入 ./test./test.exe

在这里插入图片描述


2.5 复用配置文件


我们之前生成了两个配置文件,一个是c_cpp_properties.json,一个是tasks.json。这两个文件都在.vscode这个文件夹下。

现在我们想在另一个目录中,编译执行代码,只需要将这个.vscode文件夹复制到另一个目录中,然后按照 2.4 的步骤再来一遍就可以了。


3. 一个工程中有多个.c文件需要编译怎么办?


1. 新建一个文件夹,将之前的.vscode拷贝过来,写两段代码

在这里插入图片描述

2. 改造tasts.json

  • 编译多个源代码文件:
    • 通过把${file}修改为${workspaceFolder}\\*.c,可以构建当前工作区中的所有C文件。
    • 通过把${file}修改为${workspaceFolder}\\*.cpp,可以构建当前工作区中的所有C++文件。
  • 修改编译输出的文件名:
    • 通过把{fileDirname}\\${fileBasenameNoExtension}.exe,修改为${workspaceFolder}\\myProgram.exe可以把编译输出的文件名硬编码为myProgram.exe
    • 也可以修改为${workspaceFolder}\\${workspaceRootFolderName}.exe可以令编译输出的文件名为:打开的工作区文件夹名字.exe。

3. 示例

  • 改造tasks.json
    在这里插入图片描述
  • 在终端点击【运行生成任务】:
    在这里插入图片描述
  • 生成了前缀与当前工作目录同名的文件test1.exe,在终端输入./test1可以运行它:
    在这里插入图片描述

4. 如何编译C++源文件?


1. 配置c_cpp_properties.json

  • ctrl + shift + p 快捷键,在弹出的界面中选择:【C/C++:编辑配置(UI)】,然后进入设置页面:
    在这里插入图片描述

  • 修改编译器路径:
    在这里插入图片描述

  • 智能提示模式不用改:
    在这里插入图片描述

2. 配置tasks.json

  • 在终端点击【配置任务】:
    在这里插入图片描述

  • 选择【C/C++:g++ 生成活动文件】
    在这里插入图片描述

  • 可以发现tasks.json文件中多了如下配置内容:
    在这里插入图片描述

3. 如需要编译多个.cpp文件,参开3【编译多个.c文件】


5. VSCode的调试


1. 创建launch.json文件

  • 首先点击调试,创建launch.json文件:
    在这里插入图片描述

  • MingGW64下的调试工具是gdb,所以我们选择【C/C++(GDB/LLDB)】:
    在这里插入图片描述

  • 会生成一个launch.json文件:
    在这里插入图片描述

  • 添加配置,选择【C/C++(gdb)启动】:
    在这里插入图片描述

  • 修改两个地方:
    在这里插入图片描述

  • 要调试的程序名,可以复用tasks.json中的配置;调试工具之前我们已经下过了,路径如下:
    在这里插入图片描述
    在这里插入图片描述

2. 开始调试

  • launch.json文件生成后,我们只需要打断点开始调试就可以了。
  • 调试的快捷键和VS系列的IDE是一样的,如:
    • F9:打断点/取消断点;
    • F5:启动调试;
    • F10:逐过程调试;
    • F11:逐语句调试。
  • 启动调试后,也是可以使用监视窗口查看变量等程序执行过程中的信息的。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity MVC框架1-2 实战分析

该课程资源来源于唐老狮,吃水不忘打井人,不胜感激 Unity MVC框架演示 1-1 理论分析-CSDN博客 首先你需要知道什么mvc框架,并且对三个层级有个比较清晰的认识,当然不清楚也好,下面例子中将会十分细心地让你理解&#x…

光控资本:牛市一般维持多长时间?牛市的轮涨顺序是什么?

牛市继续多长时间没有一个统一标准,我们是无法判断牛市什么时候到来,什么时候结束的。以A股牛市前史为例,继续时间从几十天到几年的情况都有,是没有规则可循的,现在A股继续最久的一次牛市是862天。 纵观A股前史&#…

【路径规划】创建末端执行器的路径,导入URDF模型,使用逆向运动学进行路径规划

摘要 本文通过路径规划为机器人末端执行器生成运动路径,采用URDF(Unified Robot Description Format)导入机器人模型,并结合逆向运动学进行路径规划和控制。使用Matlab进行建模和仿真,以确保执行器沿预定路径顺利运动…

API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码

前言 工具介绍 首先 comfyui你是少不了的,这个是工作流的后端支持,用这个去调试工作流和生成API可调用文件 前端我们就用很流行的gradio吧,什么你一时半会没有学gradio的计划,没事,笔者也没系统学过,我干…

Ubuntu18.04安装cuda11.1(出现c++版本问题)

一、概述 需要使用到ubuntu18.04进行cuda的配置,最新版本的cuda跟pytorch的版本不太适配,所以为了能够复现,我选择了一些老版本的cuda11,其使用的范围更加广泛。将自己 二、具体操作 (一)安装流程 1.官网…

[Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制

目录 一. 认识TCP协议的报头 1.TCP头部格式 2. TCP协议的特点 二. TCP如何封装与分用 TCP 报文封装与解包 如何封装解包,如何分用 分离有效载荷 隐含问题:TCP 与 UDP 报头的区别 封装和解包的逆向过程 如何分用 TCP 报文 如何通过端口号找到绑…

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5,传去服务器后,使用http访问一切正常。但是当开启了https(SSL)后,后台竟然无法登陆进去了。 输入账号密码后,点击登陆,跳转到/e/admin/ecmsadmin.php就变成页面一片…

多线程会在一个事务里面吗?

目录 多线程会在一个事务里面吗? 多线程、数据库事务以及数据库连接之间的关系 Spring的事务管理​​​​​​​ 声明式事务Transactional的实现原理 声明式事务Transactional的失效场景 Transactional注解的方法不是public为什么会失效 Spring AOP的代理机制…

【C++】——继承(下)

【C】——继承(下) 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数,但不是子类的友元函数。也就是说…

【C++】用红黑树模拟实现set与map

目录 一、红黑树的完善: 1、红黑树节点模版的修改: 2、仿函数在模拟实现中的应用: 3、新增迭代器: 4、红黑树中的迭代器实现: 二、set与map的模拟实现: 1、insert: 2、map的[ ]: 三、测…

HTML的介绍

HTML HTML是一种超文本标记语言,超文本是指,除了文本之外,还可能包含图片,音频,或者评注等的 文本形式,比文本强大,通过链接和交互方式来组织和呈现信息.标记语言是指,由标签构成的语言.HTML定义了多种不同的标签,用来表示不同的内容. 标签的介绍: 1.<h3> 三级 </h3&…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案&#xff0c;它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中&#xff0c;常见的设计模式可以分为三大类&#xff1a;创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

云计算第四阶段 CLOUD2周目 01-03

国庆假期前&#xff0c;给小伙伴们更行完了云计算CLOUD第一周目的内容&#xff0c;现在为大家更行云计算CLOUD二周目内容&#xff0c;内容涉及K8S组件的添加与使用&#xff0c;K8S集群的搭建。最重要的主体还是资源文件的编写。 (*^▽^*) 环境准备&#xff1a; 主机清单 主机…

【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Microsoft Visual Studio安装gtest

1. 参考【Windows Visual Studio下安装和使用google test&#xff08;gtest&#xff09;】 https://blog.csdn.net/Bule_Zst/article/details/78420894 2. 编译gtest使用Win32模式。 3. 配置属性&#xff0c;C/C&#xff0c;常规&#xff0c;附加包含目录 …

Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN;阿里云PG发布内置分析引擎

重要更新 1. Azure发布PostgreSQL向量索引扩展DiskANN&#xff0c;声称在构建HNSW/IVFFlat索引上&#xff0c;速度、精准度都超越pg_vector&#xff0c;并解决了pg_vector长期存在的偶发性返回错误结果的问题( [1] )。 2. 阿里云RDS PostgreSQL 发布AP加速引擎&#xff08;rds…

《Programming from the Ground Up》读后感

之所以看这本书&#xff0c;是想了解一些跟汇编相关的知识&#xff0c;打开这本书后就被作者的观点——“If you don’t understand something the first time, reread it. If you still don’t understand it, it is sometimes best to take it by faith and come back to it …

qemu启动busybox虚拟机网络连接配置

一、busybox文件系统网络问题 由于根文件是用busybox构建&#xff0c;所以很多配置文件是没有的&#xff0c;包括部分网络的默认设置。启动虚拟机后只能使用ip命令和ifconfig命令查看网络状态。 二、开启qemu网络支持 想要使虚拟机上网&#xff0c;最简单的方式可以使用 -netde…

Opencv中的直方图(3)直方图比较函数compareHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较两个直方图。 函数 cv::compareHist 使用指定的方法比较两个密集或两个稀疏直方图。 该函数返回 d ( H 1 , H 2 ) d(H_1, H_2) d(H1​,H2​…