当前位置: 首页 > news >正文

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粘性定位超出指定宽度失效问题

展示效果 解决办法&#xff1a;外层容器添加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&#xff1a;错误码的查看。 一、说明 有时写的代码单纯看是没有问题的&#xff0c;但是执行起来就会崩溃。因此要养成判断函数执行是否成功的习惯&#xff0c;除非这…...

doris: CSV导入数据

本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置&#xff0c;包括自定义分隔符、字段包围符等&#xff0c;并提供多种导入方式以满足不同场景的数据导入需求。 导入方式​ Doris 支持以下方式导入 CSV 格式数据&#xff1a; Stream LoadBro…...

FastStone Image Viewer图像处理软件安装步骤(百度网盘链接)

软件简介&#xff1a;一款小巧便捷的添加水印、特效、图片处理软件&#xff0c;让使用者可以通过它的操作界面来浏览图片&#xff0c;且还支持了幻灯播放的功能&#xff0c;让使用者能够轻松的浏览目录中的所有图片。 网盘链接&#xff1a;https://pan.baidu.com/s/1Zvrx7fXwb6…...

Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作&#xff0c;比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器&#xff0c;来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能&#xff0c;因为它们的插入和…...

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发&#xff0c;经过2个来月的努力&#xff0c;于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志&#xff08;网络爬虫学习&#xff1a;应用selenium从搜…...

【go语言】结构体

一、type 关键字的用法 在 go 语言中&#xff0c;type 关键字用于定义新的类型&#xff0c;他可以用来定义基础类型、结构体类型、接口类型、函数类型等。通过 type 关键字&#xff0c;我们可以为现有类型创建新的类型别名或者自定义新的类型。 1.1 类型别名 使用 type 可以为…...

Spring Boot是什么及其优点

简介 Spring Boot是基于Spring框架开发的全新框架&#xff0c;其设计目的是简化Spring应用的初始化搭建和开发过程。 Spring Boot整合了许多框架和第三方库配置&#xff0c;几乎可以达到“开箱即用”。 优点 可快速构建独立的Spring应用。 直接嵌入Tomcat、Jetty和Underto…...

谷氨酸:大脑功能的多面手

标题&#xff1a;谷氨酸&#xff1a;大脑功能的多面手 文章信息摘要&#xff1a; 谷氨酸是大脑中最主要的兴奋性神经递质&#xff0c;参与了90%以上的神经元激活&#xff0c;在蛋白质合成、味觉&#xff08;鲜味&#xff09;以及神经可塑性中发挥重要作用。它与GABA、多巴胺等…...

SpringCloudGateWay和Sentinel结合做黑白名单来源控制

假设我们的分布式项目&#xff0c;admin是8087&#xff0c;gateway是8088&#xff0c;consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目&#xff0c;那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以&#xff1…...

HTML新春烟花

系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心&#xff08;双心版&#xff09;10…...

【Elasticsearch】中数据流需要配置索引模板吗?

是的&#xff0c;数据流需要配置索引模板。在Elasticsearch中&#xff0c;数据流&#xff08;Data Streams&#xff09;是一种用于处理时间序列数据的高级结构&#xff0c;它背后由多个隐藏的索引组成&#xff0c;这些索引被称为后备索引&#xff08;Backing Indices&#xff0…...

Git进阶之旅:Git 配置信息 Config

Git 配置级别&#xff1a; 仓库级别&#xff1a;local [ 优先级最高 ]用户级别&#xff1a;global [ 优先级次之 ]系统级别&#xff1a;system [ 优先级最低 ] 配置文件位置&#xff1a; git 仓库级别对应的配置文件是当前仓库下的 .git/configgit 用户级别对应的配置文件时用…...

buu-pwn1_sctf_2016-好久不见29

这个也是栈溢出&#xff0c;不一样的点是&#xff0c;有replace替换&#xff0c;要输入0x3c字符&#xff08;60&#xff09;&#xff0c;Iyou 所以&#xff0c;20个I就行&#xff0c;找后面函数 输出提示信息&#xff0c;要求用户输入关于自己的信息。 使用fgets函数从标准输入…...

ES2021+新特性、常用函数

一、ES2021新特性 ES2021 数字分隔符 let num 1234567 let num2 1_234_567 Promise.any 与 Promise.all 类似&#xff0c;Promise.any 也接受一个 Promise 的数组。当其中任何一个 Promise 完成&#xff08;fullfill&#xff09;时&#xff0c;就返回那个已经有完成值的 …...

STM32——LCD

一、引脚配置 查看引脚 将上述引脚都设置为GPIO_Output 二、导入驱动文件 将 LCD 驱动的 Inc 以及 Src 中的 fonts.h,lcd.h 和 lcd.c 导入到自己工程的驱动文件中。 当然&#xff0c;后面 lcd 的驱动学习可以和 IMX6U 一块学。 三、LCD函数 void LCD_Clear(u16 Color); 功能…...

【redis进阶】分布式锁

目录 一、什么是分布式锁 二、分布式锁的基础实现 三、引入过期时间 四、引入校验 id 五、引入lua 六、引入 watch dog (看门狗) 七、引入 Redlock 算法 八、其他功能 redis学习&#x1f973; 一、什么是分布式锁 在一个分布式的系统中&#xff0c;也会涉及到多个节点访问同一…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...