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的正态分布中随机初始化。 接下来了解一下其他内容 生成…...
FlexASIO:打破专业音频门槛,让普通设备也能拥有专业级ASIO体验
FlexASIO:打破专业音频门槛,让普通设备也能拥有专业级ASIO体验 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址…...
保姆级教程:在Windows系统本地部署Qwen3-14B-Int4-AWQ对话模型
保姆级教程:在Windows系统本地部署Qwen3-14B-Int4-AWQ对话模型 1. 前言:为什么选择本地部署? 在个人电脑上运行大语言模型听起来可能有些遥不可及,但随着模型量化技术的进步,现在即使是消费级显卡也能流畅运行14B参数…...
当仿真与FPGA打架时,你该信谁?
该文章同步至公众号OneChan 一、一个真实的故事:比特翻转的“罗生门” 去年,我们在做一款通信芯片的嵌入式固件开发。在仿真环境中,我们精心编写的DMA驱动完美无缺,数据传输的CRC校验次次通过。我们信心满满地把比特流下载到FPG…...
判断一个链表是否是环形链表
给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索…...
开源小模型也能干大事:MinerU图文理解实战教程
开源小模型也能干大事:MinerU图文理解实战教程 1. 项目简介 OpenDataLab MinerU 是一个专门针对文档理解设计的智能多模态模型,基于 OpenDataLab/MinerU2.5-1.2B 模型构建。虽然只有 1.2B 参数,但这个模型在文档解析方面表现出色࿰…...
突破限速:8大网盘直链解析方案全解析
突破限速:8大网盘直链解析方案全解析 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广,无需输入“…...
Octomap在二维导航地图转换中的常见问题与优化策略
1. Octomap二维地图转换的核心挑战 第一次接触Octomap进行三维到二维地图转换时,我被它强大的空间建模能力吸引,但实际操作中踩了不少坑。最典型的就是发现生成的二维地图要么全是噪点,要么和实际环境对不上。后来才明白,这背后涉…...
手把手教你用Python实现熵权PCA:从数据清洗到可视化,一个案例全讲透
用Python实战熵权PCA:电商商品竞争力分析全流程解析 在电商平台的海量商品中,如何快速识别出真正具有竞争力的产品?传统的人工筛选方式不仅效率低下,还容易受到主观偏见的影响。本文将带你用Python实现一个完整的熵权PCA分析流程&…...
EspNowBus:ESP32轻量级安全无线总线库
1. EspNowBus 项目概述 EspNowBus 是一个面向 ESP32 平台、以组(Group)为组织单元的轻量级 ESP-NOW 消息总线库,专为小型嵌入式无线网络(典型规模 ≈6 节点)设计。其核心工程目标并非追求最大吞吐或最广覆盖࿰…...
Knowledge Repo转换器终极指南:10个技巧实现Jupyter、R Markdown等多格式完美转换
Knowledge Repo转换器终极指南:10个技巧实现Jupyter、R Markdown等多格式完美转换 【免费下载链接】knowledge-repo A next-generation curated knowledge sharing platform for data scientists and other technical professions. 项目地址: https://gitcode.com…...
