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

ros2-quick-runner插件v0.0.4版本发布

🎯 本次改动的核心目标

colcon build也能像 launch/run 一样右键一键搞定


✨ 新增功能:colcon build 右键菜单

改了什么

在任意文件夹上右键,新增了colcon build按钮。

期望的行为

右键位置终端路径执行的命令
xxx_ws/xxx_ws/colcon build
xxx_ws/src/xxx_ws/colcon build
xxx_ws/src/pkg_a/xxx_ws/colcon build

但是如果是在工作空间的上级目录右键,虽然也会出现colcon build按钮,但是运行后右下角会报错找不到工作空间。

简单说:一般来说,你只需要在你工作空间下面的文件夹右键运行,最终都在工作空间根目录执行编译


🐛 更新内容

增强findRos2Workspace函数

之前只判断同时有src/install/,现在分两级判断

// 优先:同时有 src/ 和 install/(已编译,最准确)if(fs.existsSync(srcPath)&&fs.existsSync(installPath)){returncurrentDir;}// 兜底:只有 src/,但 src/ 下有包含 package.xml 的子目录(未编译)if(fs.existsSync(srcPath)){constitems=fs.readdirSync(srcPath);consthasPackage=items.some(item=>{constitemPath=path.join(srcPath,item);returnfs.statSync(itemPath).isDirectory()&&fs.existsSync(path.join(itemPath,'package.xml'));});if(hasPackage)returncurrentDir;}

这样未编译的工作空间也能正确识别

增加isWorkspaceRoot严格判断

functionisWorkspaceRoot(dirPath){constsrcPath=path.join(dirPath,'src');if(!fs.existsSync(srcPath))returnfalse;constitems=fs.readdirSync(srcPath);returnitems.some(item=>{constitemPath=path.join(srcPath,item);returnfs.statSync(itemPath).isDirectory()&&fs.existsSync(path.join(itemPath,'package.xml'));});}

不能只看有没有src/,必须看src/下的子目录是否包含package.xml

这避免了被包内的src/子目录误判。比如xxx_ws/src/pkg_a/src,修复前在pkg_a目录右键,就会在pkg_a这个目录进行colcon build,但是修复后会在xxx_ws目录进行colcon build


📝 经验总结

  1. 此次更新最主要的功能就是添加colcon build功能,具体原因可以和ros2的编译结果有关,正是由于ros2的特性(详细原因可以看我上期文章),修改代码后需要重新编译,那么colcon build就变成了和source install/setup.bash使用频率差不多的命令,如果自己手敲,会比较费时间(我自己在复现项目的过程中体会到了,当你每改一点,然后git存档,然后你要看看能否跑起来,你就需要编译,然后运行,手敲确实繁琐)
  2. 这次更新比较突然,我也只是做了一些测试,但是由于每个人的项目不同,代码架构可能存在不同,因此我目前也排查不出问题,只能尽可能的模拟多种情况。(欢迎大家体验,提出问题,目前已经有73人下载安装)


🎁 最终效果

场景行为
右键xxx_ws/✅ 直接 build
右键xxx_ws/src/✅ 上一级 build
右键xxx_ws/src/pkg_a/✅ 自动向上找,build
工作空间未编译✅ 也能正确识别
包内src/子目录✅ 不会被误判

GitHub

https://github.com/Knighthood2001/vscode-ros2-quick-runner

版本:v0.0.4
发布日期:2026-06-10

http://www.zskr.cn/news/1508435.html

相关文章:

  • 做游戏缺背景音乐?12个优质可商用素材站点整理
  • ComfyUI-WanVideoWrapper:突破性AI视频生成框架的深度技术解析
  • 2026年评价高的乌尔禾区大盘鸡/乌尔禾区新疆菜/克拉玛依乌尔禾区大盘鸡/克拉玛依乌尔禾区新疆菜好吃推荐 - 品牌宣传支持者
  • 采购、生产、质检三类部门,制造业Agent选型标准为什么完全不同?
  • 伪Anosov流与双曲几何中的边界不可压缩曲面研究
  • 如何用Vue Json Pretty组件优雅展示JSON数据:完整指南
  • 终极指南:如何快速解密微信聊天记录实现本地数据备份
  • 从AMD 3D V-Cache到手机摄像头:手把手拆解混合键合(Hybrid Bonding)的四大实战应用
  • 骁龙X2 Elite边缘AI应用开发实战(2): 实时视觉AI应用开发
  • 从医学影像到遥感分析:Matlab灰度变换(反转/对数/伽马)在两大领域的实战应用指南
  • Anthropic双发旗舰:Claude Fable 5与Mythos 5如何重新定义AI安全与能力边界
  • 从图纸到代码:用C#理解AutoCAD的Entity对象模型,像操作数据库一样操作图形
  • 从轮询到DMA:HPM6750 UART性能提升实测与代码对比
  • 2026年知名的镜湖区本地菜/芜湖徽菜/芜湖市镜湖区本地菜好吃推荐 - 品牌宣传支持者
  • 电机控制老鸟的私房笔记:SVPWM里那个神秘的1.154和双矢量到底咋回事?
  • 2026年工程类有哪些证书可以考?系统提升岗位能力的进阶路径与高含金量证书指南
  • GRACE球谐数据转地表位移的MATLAB全流程工具包(含滤波、坐标转换与负荷形变计算)
  • 2026年成都LED显示屏行业现状:主流供应商与方案解析 - 优质品牌商家
  • 2026年家用电梯安装费用与公司选择全解析:从价格区间到服务对比 - 优质品牌商家
  • 从TPS7A91实测数据出发:LDO输出电容怎么加,噪声才能再降3dB?
  • 终极DOM转图片指南:用html-to-image实现高质量网页截图
  • 2026年职场进阶系统方法:避坑指南适合女生自考的证书怎么选与能力提升路径
  • AI 效率工具的冷启动困境:从种子用户到 PMF 的量化验证路径
  • 汽车ECU诊断入门:手把手教你理解和使用UDS的10服务(会话切换实战)
  • 别只用来改名字了!深入聊聊Innovus中update_names对设计数据一致性的影响
  • 2026年评价高的铜陵GEO排名优化/铜陵AI搜索GEO优化哪家靠谱 - 品牌宣传支持者
  • Uboot倒计时被‘脏数据’打断?一个10K上拉电阻拯救你的i.MX8M设备启动稳定性
  • 从原理到实战:深入理解arp-scan如何帮你‘看见’隐藏的网络设备(Linux/Ubuntu环境)
  • 2026年U型钢辊压成型机优质厂家选择指南:技术路线与工程适配分析 - 优质品牌商家
  • 从电解电容到CPU散热:聊聊硬件工程师眼中的‘浴盆曲线’与产品寿命设计