Cursor搭配cmake实现C++程序的编译、运行和调试
Cursor搭配cmake实现C++程序的编译、运行和调试
Cursor是一个开源的AI编程编辑器,开源地址https://github.com/getcursor/cursor ,它其实是一个集成了Chat-GPT的VS Code。
关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好?
1 准备工作
1.1 Cursor下载、安装和插件安装
1.下载Cursor

2.双击下载好的exe文件进行安装(安装过程很简单,就不赘述了)

3.安装插件
首先安装一个中文插件将cursor汉化,方便入门学习,安装好之后重启一下cursor就可以生效了,

然后安装以下几个必备插件用于C++开发



1.2 MinGW、CMake工具下载
我这里之前安装过QT5.12.2,在QT的安装目录下的Tool文件夹中已经包含了MinGW和CMake,直接进行环境变量配置就可以了。如果没有可以在公众号VSCode中回复cpp获取压缩包,比在网站上下载安装包一步步安装要快很多。
压缩包下载好之后,直接解压到自己电脑合适的路径下即可使用。
1.3 MinGW、CMake环境变量配置
1.右键“此电脑”,点击“属性”打开设置面板,选择“高级系统设置”,在弹出的系统属性面板中选择“高级”选项卡,然后点击“环境变量”按钮进入环境变量配置界面
2.在“系统变量”中选中“Path”,然后点击“编辑”,再点击“新建”,将cmake.exe、g++.exe、mingw32-make.exe三个文件所在的目录路径加进来

3.回到电脑桌面,按住Shift后点击右键,选择“在此处打开Powershell窗口”,分别在命令行输入gcc、g++、cmake后,如果是这样的结果,说明配置成功:

2 代码演练
2.1 使用AI辅助写代码
1.在自己电脑合适的位置新建一个文件夹,我这里是在D盘建了一个名为"VsCodeTest"的文件夹,

2.在Cursor中打开新建的文件夹

3.光标停留在文件夹名上,点击“新建文件”,新建一个main.cpp

4.在main.cpp中,按Ctrl+K,输入“写一个交换两个int型数据的函数”,按回车会自动生成一段代码:

5.检查无误后按Ctrl+Enter确认代码

6.继续按Ctrl+K,输入“写一个main函数调用上面的交换函数”,按回车会自动生成main函数:

7.导入头文件iostream解决代码报错

2.2 手动编译和运行
1.在Cursor菜单栏选择“终端”-“新建终端”

2.在终端窗口中的命令行里输入g++ .\main.cpp后回车对main.cpp进行编译,目录下会生成一个a.exe

3.在终端窗口中的命令行里输入.\a.exe运行a.exe

此时的a.exe不带调试信息,我们可以通过ls指令查看它的大小:

如果想要拥有一个带有调试信息的可执行文件,我们需要修改一下编译指令:

2.3 自动编译、运行和调试
1.在菜单栏选择“运行”-“启动调试”

2.选择编译器,配置tasks.json

此时工作目录下会自动生成一个.vscode文件夹,里面有一个tasks.json文件,按照我的理解,这个文件里面定义了一些编译的任务和对应的设置,我这边自动生成的tasks.json如下所示:

鼠标停留在某一项上会有一个tooltip提示你这一项是配置什么的。仔细观察会发现,其实"command"+"args"这两项对应我们在2.2节最后一步编译带调试信息的exe时的编译指令,所以我们将tasks.json修改如下:

3.在运行和调试页面点击“创建launch.json文件”

4.选择调试器:

5.在自动生成的launch.json文件中点击添加配置

此时会自动生成如下配置,需要重点关注和修改的已用红框标出

其中"program"配置的是我们要运行和调试的可执行文件,也就是前面tasks.json中编译生成的main.exe,"cwd"为目标工作目录,要与tasks.json中一致,"miDebuggerPath"配置的是调试器的路径,因为我的gdb.exe跟前面的g++.exe和mingw32-make.exe在同一目录下,该目录已经添加到系统环境变量中,所以这里写一个"gdb.exe"就可以了。另外再增加一个"preLaunchTask"属性设置让launch.json在每次启动调试前去调用tasks.json中的任务,最终launch.json修改如下:

6.在main.cpp增加几个断点,此时点击运行和调试即可以正常命中断点并进行调试了。

2.4 使用cmake进行多文件编译、运行和调试
1.删除之前生成的exe文件,在工作目录下创建swap.h和swap.cpp,将swap函数移出,另外新建CMakeLists.txt(文件名一定要写对),各文件内容如下:

2.如果电脑上装了VS,为了防止默认调用微软的MSVC编译器,在.vscode文件夹下新建一个settings.json(文件名一定要写对)添加如下设置,相当于用(cmake -G “MinGW Makefiles” …)代替(cmake …)

3.在搜索框输入>camke,选择cmake:配置(这一步等同于在终端窗口命令行输入cmake -G “MinGW Makefiles” -S ./ -B ./build)

出现如下字眼说明构建成功:

此时工作目录下会自动生成build文件夹:

4.修改tasks.json的配置如下

5.修改launch.json的配置如下:

6.此时点击运行和调试会自动在build目录下生成main.exe并且可以正常命中断点并进行调试了


相关文章:
Cursor搭配cmake实现C++程序的编译、运行和调试
Cursor搭配cmake实现C程序的编译、运行和调试 Cursor是一个开源的AI编程编辑器,开源地址https://github.com/getcursor/cursor ,它其实是一个集成了Chat-GPT的VS Code。 关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好&…...
C#-了解ORM框架SqlSugar并快速使用(附工具)
目录 一、配置 二、操作步骤 1、根据配置映射数据库对象 2、实体配置 3、创建表 4、增删改查 增加数据 删除数据 更新数据 查询数据 5、导航增删改查 增加数据 删除数据 更新数据 查询数据 6、雪花ID 三、工具 SqlLite可视化工具 MySQL安装包 MySQL可视化…...
巴黎奥运会 为啥这么抠?
文|琥珀食酒社 作者 | 朱珀 你是不是挺无语的 这奥运会还没有开始呢 吐槽大会就停不下来了 接近40度的高温 公寓没有空调 奥运巴士也没空调 连郭晶晶老公霍启刚 这种见惯大场面的也破防了 你可能会问 好不容易搞个奥运会 干嘛还要抠抠搜搜的呀 在咱们看…...
Python日期和时间处理库之pendulum使用详解
概要 在处理日期和时间时,Python 标准库中的 datetime 模块虽然功能强大,但有时显得过于复杂且缺乏一些便捷功能。为了解决这些问题,Pendulum 库应运而生。Pendulum 是一个 Python 日期和时间处理库,它在 datetime 模块的基础上进行了扩展,提供了更加友好的 API 和更多的…...
如何通过 CloudCanal 实现从 Kafka 到 AutoMQ 的数据迁移
01 引言 随着大数据技术的飞速发展,Apache Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,随着业务的扩展和技术的发展,企业面临着不断增加的存储成本和运维复杂性问题。为了更好地…...
详解Qt 之QPainterPath
文章目录 前言QPainterPath 与 QPainter 的区别QPainterPath 的主要函数和成员成员函数构造函数和析构函数路径操作布尔运算几何计算 示例代码示例 1:绘制简单路径示例 2:使用布尔运算合并路径示例 3:计算路径长度和角度 更多用法... 总结 前…...
深入理解Apache Kylin:从概念到实践
深入理解Apache Kylin:从概念到实践 引言 Apache Kylin 是一个分布式分析引擎,专为在大规模数据集上进行快速多维分析(OLAP)设计。自2015年开源以来,Kylin 已经成为许多企业在大数据分析领域的首选工具。本文将从概念…...
vue3框架Arco Design输入邮箱选择后缀
使用: <a-form-item field"apply_user_email" label"邮箱:" ><email v-model"apply_user_email" class"inputborder topinputw"></email> </a-form-item>import email from /componen…...
制作镜像
1.镜像 image: 是一个文件,包含了微型操作系统、核心代码(可执行程序)、依赖环境(库) 2.仓库 repository: 存放镜像文件的地方 3.容器: container :是运行镜像的地方--…...
Kylin系列(二)进阶
Kylin系列(二)进阶 目录 简介Kylin架构深入解析 Kylin架构概述核心组件 高级Cube设计 Cube设计原则Cube优化策略 实时数据分析 实时数据处理流程实时Cube构建 高级查询与优化 查询优化技术SQL优化 Kylin与BI工具集成 Tableau集成Power BI集成 监控与调优 系统监控性能调优 常…...
Maven实战.依赖(依赖范围、传递性依赖、依赖调解、可选依赖等)
文章目录 依赖的配置依赖范围传递性依赖传递性依赖和依赖范围依赖调解可选依赖最佳实践排除依赖归类依赖优化依赖 依赖的配置 依赖会有基本的groupId、artifactld 和 version等元素组成。其实一个依赖声明可以包含如下的一些元素: <project> ...<depende…...
关于React17的setState
不可变值 state必须在构造函数中定义 在setState之前不能修改state的值,不要直接修改state,使用不可变值 可能是异步更新 直接使用时异步的 this.setState({count: this.state.count 1 }, () > {console.log(count by callback, this.state.count) // 回调函…...
2024华为OD机试真题-英文输入法Python-C卷D卷-100分
2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述 主管期望你来实现英文输入法单词联想功能,需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词。 按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。 注意 英…...
magento2 安装win环境和linux环境
win10 安装 安装前提,php,mysql,apach 或nginx 提前安装好 并且要php配置文件里,php.ini 把错误打开 display_errorsOn开始安装 检查环境 填写数据库信息 和ssl信息,如果ssl信息没有,则可以忽略 填写域名和后台地址࿰…...
【城市数据集】世界城市数据库和访问门户工具WUDAPT
世界城市数据库和访问门户工具WUDAPT WUDAPTLCZ分类具体步骤参考 在 城市气候研究中,用于描述城市特征的数据集一般采用基于类别的传统方法,将城市地区分为数量有限的类型,从而导致精确度下降。越来越多的新数据集以亚米微尺分辨率描述城市的…...
网络爬虫必备工具:代理IP科普指南
文章目录 1. 网络爬虫简介1.1 什么是网络爬虫?1.2 网络爬虫的应用领域1.3 网络爬虫面临的主要挑战 2. 代理IP:爬虫的得力助手2.1 代理IP的定义和工作原理2.2 爬虫使用代理IP的必要性 3. 代理IP的类型及其在爬虫中的应用3.1 动态住宅代理3.2 动态数据中心…...
JMeter接口测试-5.JMeter高级使用
JMeter高级使用 案例: 用户登录后-选择商品-添加购物车-创建订单-验证结果 问题: JMeter测试中,验证结果使用断言,但断言都是固定的内容假如要判断的内容(预期内容)是在变化的, 有时候还是不确定的, 那该怎么办呢? 解决&…...
网络安全大模型开源项目有哪些?
01 Ret2GPT 它是面向CTF二进制安全的工具,结合ChatGPT API、Retdec和Langchain进行漏洞挖掘,它能通过问答或预设Prompt对二进制文件进行分析。 https://github.com/DDizzzy79/Ret2GPT 02 OpenAI Codex 它是基于GPT-3.5-turbo模型,用于编写…...
【赠书第18期】人工智能B2B落地实战:基于云和Python的商用解决方案
文章目录 前言 1 方案概述 2 方案实施 2.1 云平台选择 2.2 Python环境搭建 2.3 应用开发与部署 2.4 应用管理 2.5 安全性与隐私保护 3 方案优势与效益 4 推荐图书 5 粉丝福利 前言 随着云计算技术的快速发展,越来越多的企业开始将业务迁移至云端&#x…...
《昇思25天学习打卡营第24天》
接续上一天的学习任务,我们要继续进行下一步的操作 构造网络 当处理完数据后,就可以来进行网络的搭建了。按照DCGAN论文中的描述,所有模型权重均应从mean为0,sigma为0.02的正态分布中随机初始化。 接下来了解一下其他内容 生成…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
