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

发布于:2025-08-31 ⋅ 阅读:(24) ⋅ 点赞:(0)

最近在看一个前同事的单片机工程,因为我习惯使用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++插件吧


网站公告

今日签到

点亮在社区的每一天
去签到