问题所在
一般使用ctags 就是用ctags -R生成tags。不过这样看源码时会有两个问题:
- 假如同一个函数在不同的处理器架构中都有实现,那么跳转时,会出现很多你不关心的架构的函数原型。比如你关注arm64,但是会出现power pc,mips 等等架构
- 在跳转时,会出现很多struct member的标签。但是这通常不是你想要的。最典型的你可以在linux 源码中 :ta device,你期望的是跳到struct device 的定义处。结果出现了几百行结果,大部分都是device 作为其他struct 的member。
解决
对于问题1,linux 源码中自带一个生成tags 的脚本,只要在linux 源码根目录使用如下命令
make tags ARCH=arm64
就可以生成仅包含arm64架构的tags。
对于问题2,可以在使用如上命令前,先改一下linux 生成tags 的脚本,添加如下一个参数
或者,为ctags 添加全局参数,命令如下:
echo --c-kinds=-m >> $HOME/.ctags
更多
通过man ctags 还可以看到,还可以使用CTAGS 环境变量,以及在其他位置放置配置文件