GNU Global和GTAGS可以';找不到类定义

GNU Global和GTAGS可以';找不到类定义,tags,gnu,gnu-global,Tags,Gnu,Gnu Global,我在全局查找类/结构定义时遇到问题。 我可以用丰富的CTAG和cscope找到它们。 所有标记文件都是从同一源文件列表生成的。 我配置并构建了global等,只指定了--prefix。 configure确实找到了exhuberant并正在使用它。 这些年来,我一直在周期性地尝试全球化,但它总是有这个问题。 有什么想法吗 谢谢, 达维普我已经发现我做错了什么。也许这会对某人有所帮助 仅仅因为configure发现了丰富的ctag,并不意味着它就成为了默认的解析器。我以前的ctags不支持gtag

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

谢谢,
达维普我已经发现我做错了什么。也许这会对某人有所帮助

  • 仅仅因为configure发现了丰富的ctag,并不意味着它就成为了默认的解析器。我以前的ctags不支持gtags,也许这就是原因。在我的例子中,默认的解析器是native/builtin
  • 本地语法分析器只将H作为C,不寻找C++构造。奇怪的是,它也找不到结构
  • 我发现了两个修复:

    1) 如果你有丰富的CTAG,最好的办法就是将其设为默认值。丰富的默认配置正确地处理.h文件。如果没有,则使用方法2。在.globalrc中,更改

    default:\   
      :tc=native:
    
    to 
    
    default:\   
      :tc=ctags:
    
    2) 如果没有丰富的CTAG,请编辑.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等,如在LangMalp中给出的。


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

    < p>只导出这个变量,这应该是非常有用的。从gtags的手册页

    
    GTAGSFORCECPP
    如果设置了这个变量,每个文件的后缀为“H”都被视为C++源文件。
    

    我发现当我用默认值替换内置解析器时,它可以工作: