(ROC-RK3568-PC) 裸机17_compile_commands.json读源码

uboot 这种古老的项目,源码里面各个无关平台的代码太讨厌,查函数引用的时候跳出来一堆。

本身只关心 rk3568 相关的,找个函数引用,硬是出来一堆让你选。

网上各种找,发现 make 编译的时候可以生成 compile_commands.json,

即导出运行过的编译指令,包括文件名、编译指令、宏定义等等,

导出 compile_commands.json 后, 再结合 vscode 的 clangd 插件,阅读代码要方便得多。

如何生成 compile_commands.json?

1). 安装 bear (或 compiledb )

2). 改 uboot 的 Makefile,定位到 spl/u-boot-spl: 处,然后

        将 $(Q)$(MAKE) V=1 obj=spl -f $(srctree)/scripts/Makefile.spl all
        改为
        $(Q)  bear   $(MAKE) V=1 obj=spl -f $(srctree)/scripts/Makefile.spl all
        即:将 make **** 改为 bear make ***

这样编译后即可生成 compile_commands.json,相当于把无关的 .c 源码文件过滤掉了。
只留下会编译到的.c 文件的清单。

注:上面的修改,仅导出编译 spl 过程的 compile_commands,非整个 uboot 的。

如果在vscode中引用 compile_commands.json?
因为使用的是 WSL 虚拟机编译,所以 compile_commands.json 里面的路径全是 wsl 路径。
所以 vscode 先安装 remote-wsl,以便以类似 ssh 的方式远程打开wsl环境的目录。

remote-wsl 插件装好后,然后再:
1). 在 vscode 中安装 clangd 插件
2). 在 wsl 中安装 clangd 

其它:
CLion 这个收费IDE,据说可以直接根据 compile_commands.json 来创建工程。

非常期待 vscode 也能在打开目录时有这样的过滤功能,那以后读代码就更加清爽了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值