赞
踩
vscode使用clangd:
clangd能做很多代码解析工作,vscode使用clangd,能简化代码阅读,主要体现在两方面:
1.支持inlay功能,可以把函数的形参与实参一同显示出来:
这里白色高亮冒号的是函数形参,而后面的是函数调用时传入的实参
2.支持仅在已编译的文件中做跳转、索引,不会索引到工程不使用的文件,大大简化了代码阅读时搜索工作:
比如这个unmap回调,本身有一大堆函数,但我只编译了arm-smmu-v3.c驱动,它就只显示这个驱动
更多
配置方法如下:
1.编译kernel
2.生成compile commands文件。在kernel目录下运行如下命令:
a../scripts/clang-tools/gen_compile_commands.py -d build
b.这样在kernel目录下会有一个文件叫compile_commands.json
3.安装vscode clangd插件,如果要求安装host端clangd工具,也一并装上
4.关闭C/C++ InteliSence插件
5.配置clangd插件。在clangd的插件配置里, 选Add Item,依次加上这些项:
--compile-commands-dir=${workspaceFolder}
--background-index
--completion-style=detailed
--header-insertion=never
-log=info
1.解决clangd的运行错误
kernel目录树下写文件 .clangd,内容为:
CompileFlags:
Remove: -mabi=lp64
如果报错:-fconserve-stack,运行:sed -i 's/-fconserve-stack//g' compile_commands.json 可解决。
2.重启vscode
3.观察output窗口,如果没有报错,则说明clangd已生效:
补充说明1 也可以用bear make来生成compile_commands.json,但这种方式要删除
-fconserve-stack,脚本如下:
cat gen_compile_commands_bear.sh
#!/bin/bash
#sudo apt-get install bear
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build clean
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build bsta1000b_defconfig
bear make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build -j32
sed -i '/"-fconserve-stack"/d' compile_commands.json
2 inlay功能(函数形实参那个)可以toggle,方法是:Ctrl + Shift + p,输入inlay,点回车,重复操作就可以打开/关闭inlay
注意:
clangd在跳转时不会索引到你没编译到的文件,因此如果要搜索更广还是需要用搜索而不是跳转
参考资料
https://blog.csdn.net/xhnmdlfl/article/details/117911630
https://blog.csdn.net/airhcoaz/article/details/124850316
https://zhuanlan.zhihu.com/p/139480735
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。