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

IAR工程如何搭建vscode+clangd编辑环境

最近在看一个前同事的单片机工程,因为我习惯使用vscode环境,vscode的环境比IAR自己的环境好多了,虽然IAR的环境比keil MDK好很多(这只是自己的观点,主要是从代码追踪,keil右击功能太少太弱了)。vscode自带的c/c++插件虽然能够提供LSP服务,也就是提供函数查找等功能,但是我感觉还是不够准确,有点老古董的感觉,能用但是不够完美。vscode使用clangd插件是一个不错的选择。

clangd插件需要有一个“compile_commands.json”的文件用于指导生成一个名为“.cache”的文件夹,那么现在的问题是IAR工程如何生成compile_commands.json文件呢?

这个问题困扰了我好久,也查了很多资料,自己也写了一个总结:

https://blog.csdn.net/duanjianbo3330/article/details/150997821?spm=1011.2124.3001.6209

但是使用这条shell脚本虽然能生成compile_commands.json文件,但是clangd无法识别,我也没找到原因,主要是因为我对compile_commands.json文件格式不了解。

后来我无意识查找的时候,发现使用vscode的插件EIDE,当导入并编译IAR工程后发现在build文件夹的一个子文件夹下有一个“compile_commands.json”的文件,这个文件是EIDE编译后生成的,只使用IAR软件编译是没有的。

到这里clangd已经安装了,compile_commands.json文件也有了。但是你会发现还是不会生成“.cache”文件,原因是clangd找不到“compile_commands.json”的路径,需要提供compile_commands.json所在路径。可以参考我的另外一篇文章。

https://blog.csdn.net/duanjianbo3330/article/details/150449011?spm=1001.2014.3001.5502

也就是需要配置clangd插件所在工作区的的一个Arguments参数。

注意一定是工作区clangd设置,另外注意使用“/”而不是windows下的“\”。

“-compile-commands-dir=${workspaceFolder}/build/SmartB_OS_Project”

其中“${workspaceFloder}”是EIDE导入后生成“xxx.code-workspace”所在目录。

最后关闭并重启一下vscode,或者右键---》命令面板---》clangd:Restart Language Server。

最后在compile_commands.json文件所在目录下生成了一个.cache的文件夹。并且头文件、函数、全局变量等等都可以找到了。

终于可以将微软的c/c++插件禁掉了,先让它躺一段时间吧(* ̄︶ ̄)。

EIDE导入keil MDK工程也是一样的操作,但是keil C51虽然能够生成compile_commands.json文件并且被clangd识别,但是好多头文件找不到,例如reg51.h,还是建议现用c/c++插件吧

http://www.dtcms.com/a/358296.html

相关文章:

  • 如何使用快照将 AWS OpenSearch 服务中的数据从开发环境复制到生产环境
  • 互联网医院系统优势介绍
  • 嵌入式linux相机(2)
  • 设计模式 - 静态工厂模式 + 策略模式,
  • 【Java后端】MySQL 常见 SQL 语句优化指南
  • AI 赋能综合能源管理系统:开启智慧能源新时代
  • 掌握表单:React中的受控组件与表单处理
  • 详解Vue2、Vue3与React的Diff算法
  • 【Android】OkHttp发起GET请求 POST请求
  • React Router 6 获取路由参数
  • 【自然语言处理与大模型】如何进行大模型多模态微调
  • 【ASP.NET Core】双Token机制在ASP.NET Core中的实现
  • OpenCV 图像形态学操作与边缘检测实战指南
  • ESPTimer vs GPTimer:ESP32 定时器系统深度解析
  • 机器学习 - Kaggle项目实践(6)Dogs vs. Cats Redux: Kernels Edition 猫狗二分类
  • 最强分布式锁工具:Redisson
  • Git 的核心工作流程(三区域模型)
  • github同一台电脑支持两个或以上的ssh账户(macos或Linux系统),解决Key is already in use问题
  • 医院排班|医护人员排班系统|基于springboot医护人员排班系统设计与实现(源码+数据库+文档)
  • 苍穹外卖Day7 | 缓存商品、购物车、SpringCache、缓存雪崩、缓存套餐
  • SpringCloud Alibaba微服务--Sentinel的使用
  • docker 部署Skywalking
  • 基于大模型与 PubMed 检索的光谱数据分析系统
  • 大语言模型的“可解释性”探究——李宏毅大模型2025第三讲笔记
  • Java类加载与JVM详解:从基础到双亲委托机制
  • idea 普通项目转换成spring boot项目
  • Python实现半角数字转全角数字的完整教程
  • 《中国棒垒球》垒球世界纪录多少米·垒球8号位
  • Visual Studio(vs)免费版下载安装C/C++运行环境配置
  • LeetCode 287.寻找重复数