GNU Global和GTAGS找不到类定义

时间:2013-01-29 17:11:49

标签: tags gnu gnu-global

我在查找类/结构定义时遇到全局问题。 我可以用丰富的ctags和cscope找到它们。 所有标记文件都是从同一源文件列表构建的。 我配置并构建了global,et.al。,只指定了--prefix。 configure确实找到了exhuberant并正在使用它。 多年来我一直在定期尝试全球化,而且总是遇到这个问题。 有什么想法吗?

感谢, davep

2 个答案:

答案 0 :(得分:7)

只需导出此变量即可。从gtags -

的手册页

GTAGSFORCECPP If this variable is set, each file whose suffix is 'h' is treated as a C++ source file.

答案 1 :(得分:6)

我发现了我做错了什么。也许这会对某人有所帮助。

  1. 仅仅因为configure找到了旺盛的ctags并不意味着它使它成为默认的解析器。我的ex ctags不支持--gtags,也许这就是原因。我的案例中的默认解析器是native / builtin。
  2. 本机解析器仅将.h视为C并且不查找C ++构造。奇怪的是,它也找不到结构。
  3. 我找到了2个修复程序:

    1)如果你有丰富的ctags,那么最好是将它作为默认值。充满活力的默认配置正确处理.h文件。如果没有,请使用方法2.在.globalrc中,更改

    default:\   
      :tc=native:
    
    to 
    
    default:\   
      :tc=ctags:
    

    2)如果你没有充满活力的ctags,请编辑.globalrc并从

    更改内置解析器的langmap行
    builtin-parser:\
     :langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:
    
    to
    
    builtin-parser:\
     :langmap=c\:.c,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.h.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:
    

    即。删除.h与C的关联并将其与C ++关联。 这可能会导致C .h文件出现问题。如果是这样,您可能需要将所有 C ++ .h文件重命名为.hh,.hpp,.hxx等,如langmap中所示。

    根据我对C ++的经验,看起来大多数人仍然使用.h作为头文件。