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文件,根据你的实际情况配置该文…...
yolov5错误更改与相关参数详解(train.py)
1.错误更改 main中相关参数 if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--weights, typestr, default, helpinitial weights path)parser.add_argument(--cfg, typestr, defaultmodels/yolov5s.yaml, helpmodel.yaml path)parser.add_arg…...
Python设计模式 - 组合模式
定义 组合模式(Composite Pattern) 是一种结构型设计模式,主要意图是将对象组织成树形结构以表示"部分-整体"的层次结构。这种模式能够使客户端统一对待单个对象和组合对象,从而简化了客户端代码。 组合模式有透明组合…...
css粘性定位超出指定宽度失效问题
展示效果 解决办法:外层容器添加display:grid即可 完整代码 <template><div class"box"><div class"line" v-for"items in 10"><div class"item" v-for"item in 8">drgg</div>&…...
Windows 程序设计6:错误码的查看
文章目录 前言一、说明二、使用GetLastError找到错误的原因三、使用错误码的宏总结 前言 Windows 程序设计6:错误码的查看。 一、说明 有时写的代码单纯看是没有问题的,但是执行起来就会崩溃。因此要养成判断函数执行是否成功的习惯,除非这…...
doris: CSV导入数据
本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置,包括自定义分隔符、字段包围符等,并提供多种导入方式以满足不同场景的数据导入需求。 导入方式 Doris 支持以下方式导入 CSV 格式数据: Stream LoadBro…...
FastStone Image Viewer图像处理软件安装步骤(百度网盘链接)
软件简介:一款小巧便捷的添加水印、特效、图片处理软件,让使用者可以通过它的操作界面来浏览图片,且还支持了幻灯播放的功能,让使用者能够轻松的浏览目录中的所有图片。 网盘链接:https://pan.baidu.com/s/1Zvrx7fXwb6…...
Kafka 深入服务端 — 时间轮
Kafka中存在大量的延迟操作,比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器,来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能,因为它们的插入和…...
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
一、前言 我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜…...
【go语言】结构体
一、type 关键字的用法 在 go 语言中,type 关键字用于定义新的类型,他可以用来定义基础类型、结构体类型、接口类型、函数类型等。通过 type 关键字,我们可以为现有类型创建新的类型别名或者自定义新的类型。 1.1 类型别名 使用 type 可以为…...
Spring Boot是什么及其优点
简介 Spring Boot是基于Spring框架开发的全新框架,其设计目的是简化Spring应用的初始化搭建和开发过程。 Spring Boot整合了许多框架和第三方库配置,几乎可以达到“开箱即用”。 优点 可快速构建独立的Spring应用。 直接嵌入Tomcat、Jetty和Underto…...
谷氨酸:大脑功能的多面手
标题:谷氨酸:大脑功能的多面手 文章信息摘要: 谷氨酸是大脑中最主要的兴奋性神经递质,参与了90%以上的神经元激活,在蛋白质合成、味觉(鲜味)以及神经可塑性中发挥重要作用。它与GABA、多巴胺等…...
SpringCloudGateWay和Sentinel结合做黑白名单来源控制
假设我们的分布式项目,admin是8087,gateway是8088,consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目,那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以࿱…...
HTML新春烟花
系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心(双心版)10…...
【Elasticsearch】中数据流需要配置索引模板吗?
是的,数据流需要配置索引模板。在Elasticsearch中,数据流(Data Streams)是一种用于处理时间序列数据的高级结构,它背后由多个隐藏的索引组成,这些索引被称为后备索引(Backing Indices࿰…...
Git进阶之旅:Git 配置信息 Config
Git 配置级别: 仓库级别:local [ 优先级最高 ]用户级别:global [ 优先级次之 ]系统级别:system [ 优先级最低 ] 配置文件位置: git 仓库级别对应的配置文件是当前仓库下的 .git/configgit 用户级别对应的配置文件时用…...
buu-pwn1_sctf_2016-好久不见29
这个也是栈溢出,不一样的点是,有replace替换,要输入0x3c字符(60),Iyou 所以,20个I就行,找后面函数 输出提示信息,要求用户输入关于自己的信息。 使用fgets函数从标准输入…...
ES2021+新特性、常用函数
一、ES2021新特性 ES2021 数字分隔符 let num 1234567 let num2 1_234_567 Promise.any 与 Promise.all 类似,Promise.any 也接受一个 Promise 的数组。当其中任何一个 Promise 完成(fullfill)时,就返回那个已经有完成值的 …...
STM32——LCD
一、引脚配置 查看引脚 将上述引脚都设置为GPIO_Output 二、导入驱动文件 将 LCD 驱动的 Inc 以及 Src 中的 fonts.h,lcd.h 和 lcd.c 导入到自己工程的驱动文件中。 当然,后面 lcd 的驱动学习可以和 IMX6U 一块学。 三、LCD函数 void LCD_Clear(u16 Color); 功能…...
【redis进阶】分布式锁
目录 一、什么是分布式锁 二、分布式锁的基础实现 三、引入过期时间 四、引入校验 id 五、引入lua 六、引入 watch dog (看门狗) 七、引入 Redlock 算法 八、其他功能 redis学习🥳 一、什么是分布式锁 在一个分布式的系统中,也会涉及到多个节点访问同一…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
