目录

IAR工程如何搭建vscodeclangd编辑环境

目录

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文件呢?

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

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

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

https://i-blog.csdnimg.cn/direct/0906af98633a442fa152cd7a203e25e4.png

https://i-blog.csdnimg.cn/direct/bf96540bf8314f5fa56eac174ecffa07.png

https://i-blog.csdnimg.cn/direct/576bbd3fa3834c60aecdf3920de0ff6d.png

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

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

https://i-blog.csdnimg.cn/direct/15610ff05f444d769fbac1b9b599cd2c.png

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

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

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

https://i-blog.csdnimg.cn/direct/90fed69ecfa64e42ab1753710849b542.png

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

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

https://i-blog.csdnimg.cn/direct/7b4055a86881426e9df70ee73571c666.png

https://i-blog.csdnimg.cn/direct/46f3837cff884e15a06bf64cd3818447.png

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

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