当前位置: 首页 > 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.xdnf.cn/news/1402507.html

相关文章:

  • day42-Ansible
  • “人工智能+”行动重磅发布!ElfBoard助力嵌入式教育智能化升级
  • 【Java】常见数据结构及方法
  • EVidenceModeler v2.1 安装与使用--生信工具58
  • 嵌入式开发学习 C++:day02
  • mysql(自写)
  • 10. 函数和匿名函数(二)
  • 数值分析——误差的来源与分类、误差的基本概念(绝对误差、相对误差、有效数字)
  • 国标调查:引领汽车消费市场健康发展的理性指南
  • 奥普新汽车声学测试方案书
  • 基于单片机温控风扇ds18b20系统Proteus仿真(含全部资料)
  • 矿物类型分类实战:从数据预处理到多模型对比
  • 计算机体系结构之流水线与指令级并行
  • 离线大文件与断点续传:ABP + TUS + MinIO/S3
  • Android FrameWork - 开机启动 SystemServer 进程
  • Science:机器学习模型进行遗传变异外显率预测
  • 项目管理的关键成功因素
  • 全栈开源,高效赋能——启英泰伦新官网升级上线!
  • 链表(1)
  • 继电器的作用、选型和测量-超简单解读
  • Preprocessing Model in MPC 3 - 基于同态加密的协议 - Over Rings 环
  • Rust 泛型:抽象与性能的完美融合(零成本抽象的终极指南)
  • 20250830_Oracle 19c CDB+PDB(QMS)默认表空间、临时表空间、归档日志、闪回恢复区巡检手册
  • 【MLLM】从BLIP3o到BLIP3o-NEXT:统一生成与理解
  • Elasticsearch logsdb 索引模式和 TSDS 的业务影响
  • WSL使用指南
  • STM32 之BMP280的应用--基于RTOS的环境
  • 【MLLM】多模态理解Ovis2.5模型架构和训练流程
  • Codeforces Round 1033 (Div. 2) and CodeNite 2025 vp补题
  • 【自然语言处理与大模型】如何进行大模型多模态微调