windows环境下使用vscode以及相关插件搭建c/c++的编译,调试环境

windows下使用vscode搭建c/c++的编译、运行、调试环境,需要注意的是生成的是xxx.exe可执行文件。另外使用的编译器是mingw,也就是windows环境下的GNU。

我参考的网址是:https://zhuanlan.zhihu.com/p/1936443912806962622

文章分为2种环境搭建:

第一种就是vscode+微软官方c/c++插件+CMake Tools插件+GCC编译器+vscode自带的gdb调试器/CMake自带的调试器。

另外一种就是:vscode+clangd插件+CMake Tools插件+clangd编译器+CodeLLDB插件调试器

对于Windows下的GCC编译器和Clang编译器的下载网址:https://winlibs.com/

我下载的是都支持的:GCC 14.2.0 (with POSIX threads) + LLVM/Clang/LLD/LLDB 19.1.7 + MinGW-w64 12.0.0 (UCRT) - release 3    对应X64版本

https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-12.0.0-ucrt-r3/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.7-mingw-w64ucrt-12.0.0-r3.7z

至于如何将bin文件的路径添加到环境变量中,就不再赘述了,很简单,找到对应路径并赋值,然后  此电脑--》高级系统设置---》环境变量---》PATH中复制该路径。

以上2个环境,无论是哪一种,有以下几个地方是一样的
(1)下载winlibs的工具链:(c环境一站式部署)winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.7-mingw-w64ucrt-12.0.0-r3.7z
(2)在环境变量path中添加bin的路径
(3)安装CMake Tools的插件,都需要这个插件生成CMakeList.txt文件、CMakePresets.json的过程基本一致,只是选择的编译器不同。

(4)右键vscode--》生成CMakeLists.txt、CMakePresets.json,而且这2个文件都不用修改,不过需要注意的事,路径中不能有中文。

如果使用c/c++插件实现环境创建的话,以上插件就可以了。
如果使用clangd插件的话,需要安装clangd插件+codeLLDB这2个插件。

如果使用vscode自带的c/c++插件实现c语言代码提示。
(1)、完成以上安装之后,右键vsocde---》命令面板---》CMake:快速入门---》输入新项目名字---》C 创建C项目---》生成可执行文件---》确定---》选择源文件---》添加新预设---》从编译器创建---》选择GCC-MINGW编译器(因为是在windows下执行)---》输入预设名(gcc)----》确定
(2)选择左侧的CMake按钮,打开---》点击生成,就生成可执行文件,利用CMake自带调试工具:右键点击调试,进入调试界面,出现单步、全速运行的图标。
(3)使用c/c++自带的gdb调试工具:切换左侧的“运行和调试”按钮---》点击创建launch.json---》c/c++(GDB/LLDB)--->c/c++:gdb 启动---》
修改可执行文件路径"program",例如:"program":"${workspaceFolder}/out/build/gcc/hello.exe"。
修改:"miDebuggerPath",   例如:"miDebuggerPath": "gdb",

如果使用clangd+codeLLDB这2个插件搭建c/C++的编译运行环境。
(1)、完成以上安装之后,右键vsocde---》命令面板---》CMake:快速入门---》输入新项目名字---》C 
创建C项目---》生成可执行文件---》确定---》选择源文件---》添加新预设---》从编译器创建---》选择clangd编译器---》输入预设名(clangd)----》确定。
(2)、选择左侧的CMake按钮,打开---》点击生成,就生成可执行文件。
(3)、使用codeLLDB调试工具:切换左侧的“运行和调试”按钮---》点击创建launch.json---》c/c++(GDB/LLDB)--->c/c++:gdb 启动---》CodeLLDB:Launch
修改可执行文件路径"program",例如:"program": "${workspaceFolder}/out/build/clangd/hello.exe"。


(4)最后就可以执行调试了。

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

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

相关文章

标准瓦片层级0~20,在EPSG:4326坐标系下,每个像素点代表的度数

在 EPSG:4326(WGS84经纬度坐标系) 下,瓦片层级(Zoom Level)的分辨率以 度/像素 为单位,其计算遵循 TMS Global Geodetic 规范(单位:度)。以下是 标准层级 0 至 20 的分辨…

Unity高级剔除技术全解析

目录 ​编辑层级剔除(Layer Culling)原理详解 代码示例 业务应用场景 距离剔除(Distance Culling)技术细节 进阶实现 开放世界优化技巧 视口裁剪(Viewport Culling)多摄像机协作方案 高级应用场景 …

[Linux] Linux文件系统基本管理

目录 识别文件系统和设备 Linux 中设备 Linux 文件系统 查看设备和文件系统 lsblk命令 df命令 du命令 案例:查看根文件系统中哪个文件占用了最大空间 环境准备 查找过程 挂载和卸载文件系统 环境准备 挂载文件系统 卸载文件系统 卸载失败处理 lsof …

如何在 Ubuntu 24.04 Server 或 Desktop 上安装 XFCE

在 Ubuntu 24.04 上更改当前桌面环境或添加新的桌面环境并不是一项艰巨的任务。大多数流行的 Linux 桌面环境,包括 XFCE,都可以通过默认的 Ubuntu 24.04 LTS 系统仓库安装。在本教程中,我们将学习如何使用 Tasksel 工具在 Ubuntu Linux 上安装和配置 XFCE。 访问终端并运行…

linux下用c++11写一个UDP回显程序

需求&#xff1a;1&#xff09;从2个UDP端口接收数据&#xff0c;并在同样的端口回显。echo2&#xff09;多个处理线程&#xff0c;多个发送线程&#xff1b;3&#xff09;使用条件变量唤醒&#xff1b;#include <stack> #include <mutex> #include <atomic>…

MySQL 深分页优化与条件分页:把 OFFSET 换成“游标”,再用覆盖索引抄近路

MySQL 深分页优化与条件分页:把 OFFSET 换成“游标”,再用覆盖索引抄近路 这不是“玄学调优”,而是可复制的方案。本文用可复现的 DDL/造数脚本,演示为什么 OFFSET 越大越慢,如何用 条件游标(Keyset Pagination) 替换它,并配上 覆盖索引。还会教你看 EXPLAIN/EXPLAIN A…

Unity 绳子插件 ObjRope 使用简记

Unity 绳子插件&#xff0c;是一个基于物理的、高度逼真且可交互的绳索模拟解决方案。 其性能良好&#xff0c;能够运行在小游戏平台。 一、插件基本 插件资源商店地址&#xff1a; Obi Rope | Physics | Unity Asset Store 官方文档&#xff08;手册&#xff09;&#xff…

demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记

一、城市选择器实现笔记1. 双层 for 循环渲染数据结构interface BKCityContent {initial: string; // 字母索引cityNameList: string[]; // 城市列表 }核心实现// 外层循环&#xff1a;字母分组 - 遍历城市数据&#xff0c;按字母分组显示 ForEach(this.cityContentList, (item…

【总结型】c语言中的位运算

位运算包括 & | ^ ~ << >>按位与 将某些变量中的某些位清0同时保持其他位不变。也可以用来获取变量中的某一位。 例如&#xff1a;将int型变量n低8位全置为0&#xff0c;其余位保持不变。 n n & 0xffffff00 如何判断一个int型变量n的第七位。 n & 0x8…

如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?

url: /posts/4fb9e30bb20956319c783e21897a667a/ title: 如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法? date: 2025-08-16T01:14:26+08:00 lastmod: 2025-08-16T01:14:26+08:00 author: cmdragon summary: APScheduler是Python中强大的任务调度库,支持任务持久化…

GitHub的简单使用方法----(5)

最后一篇简单讲讲git管理远程仓库 1.目的 备份&#xff0c;实现代码共享集中化管理 &#xff08;将本地仓库同步到git远程仓库中&#xff09; git clone 仓库地址 以下图为示例&#xff0c;我打开了一个别人的项目仓库&#xff0c;点击code能看到仓库地址 等待完成即可 如…

C++ STL-string类底层实现

摘要&#xff1a; 本文实现了一个简易的string类&#xff0c;主要包含以下功能&#xff1a; 1. 默认成员函数&#xff1a;构造函数&#xff08;默认/参数化&#xff09;、拷贝构造、赋值重载和析构函数&#xff0c;采用深拷贝避免内存问题&#xff1b; 2. 迭代器支持&#xff1…

【LeetCode每日一题】

每日一题3. 无重复字符的最长子串题目总体思路代码1.两数之和题目总体思路代码15. 三数之和题目总体思路代码2025.8.153. 无重复字符的最长子串 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3…

sharding-jdbc读写分离配置

一主两从&#xff0c;爆红是正常的&#xff0c;不知为啥 spring:shardingsphere:datasource:names: ds_master,ds_s1,ds_s2ds_master:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.jdbc.DriverjdbcUrl: jdbc:mysql://192.168.135.100:3306/gmall_produ…

【大模型核心技术】Dify 入门教程

文章目录一、Dify 是什么二、安装与部署2.1 云端 SaaS 版&#xff08;快速入门&#xff09;2.2 私有化部署&#xff08;企业级方案&#xff09;三、界面导航与核心模块3.1 控制台概览3.2 核心功能模块详解3.2.1 知识库&#xff08;RAG 引擎&#xff09;3.2.2 工作流编排3.2.3 模…

homebrew 1

文章目录brew(1) – macOS&#xff08;或 Linux&#xff09;上缺失的包管理器概要描述术语表基本命令install *formula*uninstall *formula*listsearch \[*text*|/*text*/]命令alias \[--edit] \[*alias*|*alias**command*]analytics \[*subcommand*]autoremove \[--dry-run]bu…

设计索引的原则有哪些?

MySQL 索引设计的核心原则是 在查询性能与存储成本之间取得平衡。以下是经过实践验证的 10 大设计原则及具体实现策略&#xff1a;一、基础原则原则说明示例/反例1. 高频查询优先为 WHERE、JOIN、ORDER BY、GROUP BY 频繁出现的列建索引✅ SELECT * FROM orders WHERE user_id1…

使用影刀RPA实现快递信息抓取

最近公司项目有个需求&#xff0c;要求抓取快递单号快递信息&#xff0c;比如签收地点、签收日期等。该项目对应的快递查询网站是一个国外的网站&#xff0c;他们有专门的快递平台可以用于查询。该平台提供了快递接口进行查询&#xff0c;但需要付费。同时也提供了免费的查询窗…

蚁剑--安装、使用

用途限制声明&#xff0c;本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具&#xff0c;严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果&#xff0c;作者及发布平台不承担任何责任。渗透测试涉及复杂技…

Varjo XR虚拟现实军用车辆驾驶与操作培训

Patria基于混合现实的模拟器提供了根据现代车辆乘员需求定制的培训&#xff0c;与传统显示设置相比&#xff0c;全新的模拟解决方案具有更好的沉浸感和更小的物理空间需求。Patria是芬兰领先的国防、安全和航空解决方案提供商。提供尖端技术和全面的培训系统&#xff0c;以支持…