脚本宝典收集整理的这篇文章主要介绍了

GNU global索引非常见文件扩展名

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

问题

以前一直用cscope进行代码索引,最近想尝试一下gtags,也就是GNU Global,却遇到一个问题:就是公司的项目中,有的C代码的文件的扩展名并不是.h或者.c(例如.hbc.hbh),在这种情况下,gtags的默认配置无法索引到这些文件中的定义。

如何做?

我找到的方法是修改gtags的配置文件,使得gtags将这些非常见的扩展名识别成C语言的源文件。

从gtags的网站找到配置文件修改相关的文档http://www.gnu.org/software/global/globaldoc.html#SEC41。可惜文档几乎没讲什么,只说明了文件$HOME/.globalrc是个人配置文件,可以把默认配置文件copy到这个文件,然后再根据自己的需要修改配置。坑爹的是,文档中没有说明默认的配置文件示例在哪里。

经过一番搜索,在目录/usr/share/doc/global/examples/找到了默认的配置文件gtags.conf。

  1. 首先将gtags.conf复制到~/.globalrc文件:

    `$cp /usr/share/doc/global/examples/gtags.conf ~/.globalrc`
    
  2. 开始编辑~/.globalrc文件,其中和本文的问题有关的一段配置是

common:

:skip=GPATH,GTAGS,GRTAGS,GSYMS,HTML/,HTML.pub/,html/,tags,TAGS,ID,y.tab.c,y.tab.h,.notfunction,cscope.out,cscope.po.out,cscope.in.out,.gdbinit,SCCS/,RCS/,CVS/,CVSROOT/,{arch}/,.svn/,.git/,.cvsrc,.cvsignore,.gitignore,.cvspass,.cvswrappers,.deps/,autom4te.cache/,.snprj/:

:langmap=c:.c.h,yacc:.y,asm:.s.S,java:.java,cpp:.c++.cc.cpp.cxx.hxx.hpp.C.H,php:.php.php3.phtml:

其中的langmap就是我们需要修改的配置,langmap具体的含义可以通过man gtags查看(打开手册后搜索langmap即可看到)。这里简单说一下,langmap的意思就是把一个语言和对应的扩展名关联起来,格式是language:extensions list,例如c:.c.h就表示扩展名为.h和.c的文件会解析为C语言。因此为了让gtags将.hbh和.hbc也解析为C语言,将C语言的配置修改为c:.c.h.hbc.hbh。langmap的完整设置就变成:

langmap=c:.c.h.hbc.hbh,yacc:.y,asm:.s.S,java:.java,cpp:.c++.cc.cpp.cxx.hxx.hpp.C.H,php:.php.php3.phtml:

保存配置后,重新生成gtags的索引文件,这个时候进行搜索就能索引到.hbc和.hbh文件中的内容啦。

另外,顺便说一下,配置文件中的:skip变量的配置就是指gtags在创建索引文件的时候忽略哪些文件和目录。

总结

以上是脚本宝典为你收集整理的

GNU global索引非常见文件扩展名

全部内容,希望文章能够帮你解决

GNU global索引非常见文件扩展名

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过