cursor ide配置远程ssh qt c++开发环境过程记录
cursor是啥就不介绍了,好像是目前最好用的ai ide,下面主要是配置远程ssh连接linux机器进行qt5 c++程序运行的配置过程记录。
一、c_cpp_properties.json
在项目根目录的.vscode目录里面新建c_cpp_properties.json文件,根据你的实际情况配置该文件内容:
{"configurations": [// {// "name": "Win32",// "includePath": [// "${workspaceFolder}/**",// "D:/msys64/mingw64/include/**",// "${VCPKG_ROOT}/installed/x64-windows/include/**"// ],// "defines": [// "_DEBUG",// "UNICODE",// "_UNICODE"// ],// "compilerPath": "D:/msys64/mingw64/bin/gcc.exe",// "cStandard": "c11",// "cppStandard": "c++17",// "intelliSenseMode": "gcc-x64"// },{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include/**","${VCPKG_ROOT}/installed/x64-linux/include/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "linux-gcc-x64","configurationProvider": "ms-vscode.cmake-tools"}],"version": 4
}
我这里是用vcpkg在linux下面编译安装的qt,所以include目录要加上它,当然你需要提前配置VCPKG_ROOT环境变量值,我这里是怎么配置的,具体要不要配置看你用没用vcpkg。
export VCPKG_ROOT=/data/cpp/vcpkg
二、tasks.json
还是在项目根目录的.vscode目录里面配置tasks.json,参考配置内容如下:
{"version": "2.0.0","tasks": [{"label": "qmake","type": "shell","command": "/data/cpp/vcpkg/installed/x64-linux/tools/qt5/bin/qmake","args": ["${workspaceFolder}/quickjstest.pro","-spec","linux-g++","CONFIG+=debug","CONFIG+=qml_debug"],"group": "build"},{"label": "make","type": "shell","command": "make","args": ["-j8"],"group": {"kind": "build","isDefault": true},"dependsOn": ["qmake"]},{"label": "clean","type": "shell","command": "make clean","group": "build"}]
}
三、launch.json
同样的路径配置launch.json,参考配置内容如下:
{"version": "0.2.0","configurations": [{"name": "Debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/debug/quickjstest","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [{"name": "DISPLAY","value": "${env:DISPLAY}"},{"name": "XAUTHORITY","value": "${env:HOME}/.Xauthority"},{"name": "QT_X11_NO_MITSHM","value": "1"},{"name": "QT_QPA_PLATFORM","value": "xcb"},{"name": "LD_LIBRARY_PATH","value": "/usr/lib/x86_64-linux-gnu:/data/cpp/vcpkg/installed/x64-linux/lib:/usr/lib/qt5/lib"}],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "make"}]
}
四、qt工程文件修改
打开你的qt工程文件.pro文件,添加以下内容,用于指定编译过程中生成的临时文件存储路径
# 默认规则使生成的可执行文件带有调试信息
CONFIG += debug# 输出目录
DESTDIR = $$PWD/build/debug# 中间文件位置
OBJECTS_DIR = $$PWD/build/debug/.obj
MOC_DIR = $$PWD/build/debug/.moc
RCC_DIR = $$PWD/build/debug/.rcc
UI_DIR = $$PWD/build/debug/.ui
五、修改sshd服务,启用x11转发
修改远程Linux主机的/etc/ssh/sshd_config文件,启用下面这两行配置内容:
X11Forwarding yes
X11DisplayOffset 10
然后systemctl restart sshd 重启sshd服务
六、linux系统环境变量配置
根据你自己的配置习惯,是放在~/.bashrc里面还是/etc/profile文件自己选
export PATH=/data/protoc/bin:$PATH:/data/cpp/vcpkg:/opt/qtcreator-15.0.0/bin:/data/cpp/vcpkg/installed/x64-linux/tools/qt5/bin
export VCPKG_ROOT=/data/cpp/vcpkg
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/data/cpp/vcpkg/installed/x64_linux/lib:$LD_LIBRARY_PATH
export DISPLAY=:10
export QT_QPA_PLATFORM_PLUGIN_PATH=/data/cpp/vcpkg/installed/x64-linux/plugins/platforms/
export QT_DEBUG_PLUGINS=1
这一步的几个关键配置,要是你只是解决qt程序的界面在ssh远程开发的时候出不来的问题,配置最后三个就行了,其他的要是你的qt程序运行时的一些依赖项找不到,把PATH、LD_LIBRARY_PATH这些都配上就行了。
整完以后source 你的配置文件使其生效,实在不行reboot机器也行。
七、cursor/vscode的ssh配置文件修改
ctrl+shift+p 输入或者选择open SSH configureation file,在你的远程主机配置下面添加
Host 目标ssh主机名称HostName 1.2.3.4 ForwardX11 yesForwardX11Trusted yesForwardAgent yes User rootPort 22IdentityFile C:/Users/你的windows登录用户名/.ssh/id_rsa
八、其他
我的linux系统是ubuntu ,执行qmake以后其实并不是真正的qt make工具,而是一个qtchooser程序,刚才也说了我的qt5是vcpkg自己编译安装的,这里还需要做个简单的配置
# 创建配置目录
sudo mkdir -p /usr/share/qtchooser# 创建配置文件,假设我们命名为 vcpkg-qt5.conf
sudo vim /usr/share/qtchooser/vcpkg-qt5.conf
在这个vcpkg-qt5.conf配置文件中添加以下内容:
/data/cpp/vcpkg/installed/x64-linux/tools/qt5/bin
/data/cpp/vcpkg/installed/x64-linux/tools/qt5/lib# 列出所有可用的Qt版本
qtchooser -l# 设置默认使用vcpkg的Qt5
export QT_SELECT=vcpkg-qt5# 验证qmake路径
which qmake
qmake --version 要是没有问题这一步就应该显示正确的qmake执行信息了。#永久固化QT_SELECT的结果避免每次重启都要从头配置
echo 'export QT_SELECT=vcpkg-qt5' >> ~/.bashrc
九、验证一下吧
reboot linux机器,关掉cursor/vscode ide重开,连接远程ssh主机,运行qt项目,linux下面的qt程序gui在我的windows下面显示正常,加断点正常。
剩下的就是愉快的TAB、TAB了。
相关文章:
cursor ide配置远程ssh qt c++开发环境过程记录
cursor是啥就不介绍了,好像是目前最好用的ai ide,下面主要是配置远程ssh连接linux机器进行qt5 c程序运行的配置过程记录。 一、c_cpp_properties.json 在项目根目录的.vscode目录里面新建c_cpp_properties.json文件,根据你的实际情况配置该文…...
萌新学 Python 之数值处理函数 round 四舍五入、abs 绝对值、pow 幂次方、divmod 元组商和余数
关于数值处理的常用函数:round、abs、pow、divmod 1. round(数值[,小数位]) 四舍五入 说明:对数值进行四舍五入,小数位可以没有,也可以是负数(从小数点左边开始进行) round(数值[,小数位]) 四舍五入 #…...
vim交换文件的作用
1.数据恢复:因为vim异常的退出,使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑:vim检测到交换文件的存在,会给出提示,以避免一个文件同时被多人编辑。 (vim交换文件的工作原理:vim交换文件的工作…...
NoSQL与SQL比较
1.认识NoSQL NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 1.1.结构…...
ThinkPHP 8模型与数据的插入、更新、删除
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...
Ollama windows安装
Ollama 是一个开源项目,专注于帮助用户本地化运行大型语言模型(LLMs)。它提供了一个简单易用的框架,让开发者和个人用户能够在自己的设备上部署和运行 LLMs,而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…...
【PyTorch】4.张量拼接操作
个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术,能够处理复杂的数据模式。通过 PyTorch࿰…...
准备知识——旋转机械的频率和振动基础
旋转频率,也称为转速或旋转速率(符号ν,小写希腊字母nu,也作n),是物体绕轴旋转的频率。其国际单位制单位是秒的倒数(s −1 );其他常见测量单位包括赫兹(Hz)、每秒周期数(cps) 和每分钟转数(rpm)…...
STM32调试手段:重定向printf串口
引言 C语言中经常使用printf来输出调试信息,打印到屏幕。由于在单片机中没有屏幕,但是我们可以重定向printf,把数据打印到串口,从而在电脑端接收调试信息。这是除了debug外,另外一个非常有效的调试手段。 一、什么是pr…...
spring mvc 创建restapi 笔记
RestController RequestMapping("/spittles") public class SpittleController {// 示例:使用 RequestBody 接收 JSON 并自动转换为 Spittle 对象PostMappingpublic Spittle saveSpittle(RequestBody Spittle spittle) {// 此时 Spring 已经把请求体中的 …...
【C++】特殊类设计
目录 一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、请设计一个类,只能在栈上创建对象四、请设计一个类,不能被继承五、请设计一个类,只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒汉模式 结尾…...
Java---入门基础篇(上)
前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...
Redis 消息队列详解
Redis 消息队列详解 Redis 作为一个高性能的内存数据库,支持多种实现消息队列的方式,主要包括: Redis List(基于列表的队列)Redis Pub/Sub(发布/订阅)Redis Stream(消息流…...
C语言编译过程全面解析
今天是2025年1月26日,农历腊月二十七,一个距离新春佳节仅一步之遥的日子。城市的喧嚣中,年味已悄然弥漫——能在这个时候坚持上班的人,真可称为“牛人”了吧,哈哈。。。。 此刻,我在重新审视那些曾被遗忘的…...
萌新学 Python 之运算符
Python 中运算符包括:算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、海象运算符 算术运算符:加 减 - 乘 * 除 / 取整 // 求余 % 求幂 ** 注意:取整时,一正一负整除,向下取整 比如 5 // …...
【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)
本文项目编号 T 038 ,文末自助获取源码 \color{red}{T038,文末自助获取源码} T038,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...
四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)
四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用) 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)1. 有序集合 Zset(sorted set)2. zset 有序…...
Linux 信号驱动IO
Linux 信号驱动IO 1. fcntl() 在Linux操作系统中,fcntl() 是一个用于操作文件描述符的系统调用。它提供了多种功能,包括控制文件描述符的属性、管理文件锁定、设置文件的非阻塞模式等。 本文只截取了用于IO模型的 fcntl() 部分内容, fcntl(…...
OpenCV:开运算
目录 1. 简述 2. 用腐蚀和膨胀实现开运算 2.1 代码示例 2.2 运行结果 3. 开运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 开运算应用场景 5. 注意事项 6. 总结 相关阅读 OpenCV:图像的腐蚀与膨胀-CSDN博客 OpenCV:闭运算-CSDN博客 …...
宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大
磁盘空间占用过多,排查后发现网站/www/wwwroot只占用7G,/www/server占用却高达8G,再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识,做个记录。 mysql…...
使用 Iptables 实现网络安全策略:从入门到精通
使用 Iptables 实现网络安全策略:从入门到精通 在运维工作中,网络安全是重中之重,而 iptables 作为 Linux 内核自带的防火墙工具,提供了强大的流量控制能力。通过合理的 iptables 规则,我们可以有效防止未经授权的访问,保护服务器免受攻击。今天,我们就来深入探讨如何使…...
AI作画提示词:Prompts工程技巧与最佳实践
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…...
vue框架技术相关概述以及前端框架整合
vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…...
并发编程 - 线程同步(二)
经过前面对线程同步初步了解,相信大家对线程同步已经有了整体概念,今天我们就来一起看看线程同步的具体方案。 01、ThreadStatic 严格意义上来说这两个并不是实现线程同步方案,而是解决多线程资源安全问题,而我们研究线程同步最终…...
仿知乎网站问答源码,开源版
按照需要一定动手能力 发文章,发视频,发想法,提问回答,注册登录 开发环境 使用技术:springbootthymeleafRedis; 开发环境:tomcat8.0,jdk8.0, IDEA项目,mysql5.7 源码下…...
CTF-web: phar反序列化+数据库伪造 [DASCTF2024最后一战 strange_php]
step 1 如何触发反序列化? 漏洞入口在 welcome.php case delete: // 获取删除留言的路径,优先使用 POST 请求中的路径,否则使用会话中的路径 $message $_POST[message_path] ? $_POST[message_path] : $_SESSION[message_path]; $msg $userMes…...
阿里:基于路由和规划的多agent系统
📖标题:Talk to Right Specialists: Routing and Planning in Multi-agent System for Question Answering 🌐来源:arXiv, 2501.07813 🌟摘要 🔸利用大型语言模型(LLM),…...
Java基础面试题总结(题目来源JavaGuide)
问题1:Java 中有哪 8 种基本数据类型?它们的默认值和占用的空间大小知道不? 说说这 8 种基本数据类型对 应的包装类型。 在 Java 中,有 8 种基本数据类型(Primitive Types): 基本数据类型关键…...
CSS(快速入门)
欢迎大家来到我的博客~欢迎大家对我的博客提出指导,有错误的地方会改进的哦~点击这里了解更多内容 目录 一、什么是CSS?二、基本语法规范三、CSS选择器3.1 标签选择器3.2 id选择器3.3 class选择器3.4 通配符选择器3.5 复合选择器 四、常用CSS样式4.1 color4.2 font…...
架构技能(六):软件设计(下)
我们知道,软件设计包括软件的整体架构设计和模块的详细设计。 在上一篇文章(见 《架构技能(五):软件设计(上)》)谈了软件的整体架构设计,今天聊一下模块的详细设计。 模…...
2. Java-MarkDown文件解析-工具类
2. Java-MarkDown文件解析-工具类 1. 思路 读取markdown文件的内容,根据markdown的语法进行各个类型语法的解析。引入工具类 commonmark 和 commonmark-ext-gfm-tables进行markdown语法解析。 2. 工具类 pom.xml <!-- commonmark 解析markdown --> <d…...
OpenEuler学习笔记(十五):在OpenEuler上搭建Java运行环境
一、在OpenEuler上搭建Java运行环境 在OpenEuler上搭建Java运行环境可以通过以下几种常见方式,下面分别介绍基于包管理器安装OpenJDK和手动安装Oracle JDK的步骤。 使用包管理器安装OpenJDK OpenJDK是Java开发工具包的开源实现,在OpenEuler上可以方便…...
【Rust自学】15.4. Drop trait:告别手动清理,释放即安全
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.4.1. Drop trait的意义 类型如果实现了Drop trait,就可以让程序员自定义当值…...
深入探讨Web应用开发:从前端到后端的全栈实践
在数字化时代,Web应用已成为连接用户与服务的关键桥梁。无论是电商平台、社交媒体,还是企业内部管理系统,Web应用都扮演着不可或缺的角色。本文将深入探讨Web应用开发的全栈实践,从前端的用户体验设计到后端的数据处理与存储&…...
4.贪心算法
贪心 贪心算法(Greedy Algorithms)是 C 等编程语言中常用的一种算法策略。 定义 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最…...
js笔记(黑马程序员)
(Web APIs day4) 一、日期对象 1.实例化 在代码中发现了 new 关键字时,一般将这个操作称为实例化 创建一个时间对象并获取时间// 1.得到当前时间 2.日期对象方法 因为日期对象返回的数据我们不能直接使用,所以需…...
LangChain:使用表达式语言优化提示词链
在 LangChain 里,LCEL 即 LangChain Expression Language(LangChain 表达式语言),本文为你详细介绍它的定义、作用、优势并举例说明,从简单示例到复杂组合示例,让你快速掌握LCEL表达式语言使用技巧。 定义 …...
Python 有用的资源
Python 有用的资源 引言 Python 作为一种强大的编程语言,因其简洁明了的语法和丰富的库资源,在数据分析、人工智能、网络开发等领域拥有广泛的应用。对于初学者和专业人士来说,掌握一些有用的Python资源可以大大提高编程效率。本文将为您介绍一些实用的Python资源,帮助您…...
汽车蓝牙钥匙定位仿真小程序
此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…...
项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(九)(完结篇)
文章目录 一、成绩查询模块实现1、学生成绩查询功能实现1.1 页面设计1.2 前端页面实现1.3 后端功能实现2、成绩分段查询功能实现2.1 页面设计2.2 前端页面实现2.3 后端功能实现二、试卷练习模块实现三、我的分数模块实现1、 页面设计2、 前端页面实现3、 后端功能实现四、交流区…...
python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算
【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。 按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位异或运算: 两个等长度二进制数上下对齐,相…...
electron打包客户端在rk3588上支持h265硬解
目录 前言 chromium是如何支持h265硬解 electron/chromium第一次编译 electron/chromium第二次编译 前言 我们的客户端程序是用electron打包的前端程序,其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的,但视频源…...
MyBatis 缓存机制详解
目录 一、什么是缓存? 1. 什么是缓存? 2. 为什么使用缓存? 3. 什么样的数据适合使用缓存? 二、MyBatis 缓存机制 1. 一级缓存(也叫本地缓存) 2. 一级缓存失效的情况 3. 二级缓存 4. 二级缓存失效的…...
【后端开发】字节跳动青训营Cloudwego脚手架
Cloudwego脚手架使用 cwgo脚手架 cwgo脚手架 安装的命令: GOPROXYhttps://goproxy.cn/,direct go install github.com/cloudwego/cwgolatest依赖thriftgo的安装: go install github.com/cloudwego/thriftgolatest编辑echo.thrift文件用于生成项目&…...
数据结构选讲 (更新中)
参考 smWCDay7 数据结构选讲2 by yyc 。 可能会补充的: AT_cf17_final_j TreeMST 的 F2 Boruvka算法 目录 AT_cf17_final_j Tree MST AT_cf17_final_j Tree MST link 题意 给定一棵 n n n 个点的树,点有点权 w i w_i wi,边有边权。建立…...
springboot 简化 spring开发
什么是自动配置? 简单概念: Spring Boot 自动配置是一种 “约定优于配置” 的做法。根据项目类路径(classpath)上存在的依赖、配置文件中的某些属性,Spring Boot 会自动为常见场景创建并配置相关 Bean,省…...
Yolo11 + OCR 营业执照识别+信息抽取(预期后续改用其他ocr更简单,推理预计使用onnxruntim加速,分c++和python两种方式部署)
目录 一 数据集制作 1 labelimg的安装与使用 2 标注方式 3 数据集制作 二 模型训练 三 使用Yolo11 + OCR 实现“营业执照”信息解析完整方案 1 cutLinesforcode.py 2 getBusinessLicenseContentPart.py 3 getPartWords.py 4 pdfTojpg.py 5 main.py 本项目可用于毕业…...
机器学习day3
自定义数据集使用框架的线性回归方法对其进行拟合 import matplotlib.pyplot as plt import torch import numpy as np # 1.散点输入 # 1、散点输入 # 定义输入数据 data [[-0.5, 7.7], [1.8, 98.5], [0.9, 57.8], [0.4, 39.2], [-1.4, -15.7], [-1.4, -37.3], [-1.8, -49.1]…...
C基础寒假练习(3)
一、求数组中的第二大值 #include <stdio.h> int main() {int arr[] {12, 35, 1, 10, 34, 1};int size sizeof(arr) / sizeof(arr[0]);if (size < 2) {printf("数组元素不足两个\n");return 0;}int first -2147483648, second -2147483648; // 使用IN…...
星际战争模拟系统:新月的编程之道
星际战争模拟系统:新月的编程之道 作为一名在 25 世纪星际时代成长起来的科学家和军事战略家,我对编程和人工智能的热爱始于童年。我的父亲是一位著名的物理学家,母亲是一位杰出的生物工程师。在他们的影响下,我从小就对科学和技术…...