5

クラス/構造体の定義を見つけるためにグローバルを取得するのに問題があります。熱狂的な ctags と cscope でそれらを見つけることができます。すべてのタグ ファイルは、同じソース ファイル リストから作成されます。--prefix のみを指定して、global などを構成してビルドしました。configure は活気に満ちていることを発見し、それを使用しています。私は何年にもわたって定期的にグローバルを試してきましたが、常にこの問題がありました。何か案は?

ありがとう、ダブ

4

2 に答える 2

8

この変数をエクスポートするだけで十分です。のマニュアルページからgtags-

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

于 2014-11-04T00:16:04.177 に答える
7

私は自分が何を間違っていたかを発見しました。多分これは誰かを助けるでしょう。

  1. configure が熱狂的な ctags を見つけたからといって、それがデフォルトのパーサーになるわけではありません。私の ex ctags は --gtags をサポートしていません。私の場合のデフォルトのパーサーはネイティブ/ビルトインでした。
  2. ネイティブ パーサーは .h を C のみとして扱い、C++ 構造を検索しません。奇妙なことに、構造体も見つかりません。

私は2つの修正を見つけました:

1) 熱狂的な ctags がある場合は、それをデフォルトにするのが最善です。熱狂的なデフォルト構成は、.h ファイルを適切に処理します。そうでない場合は、方法 2 を使用します。

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 ファイルで問題が発生する可能性があります。その場合、langmap に示されているように、すべての C++ .h ファイルの名前を .hh、.hpp、.hxx などに変更する必要がある場合があります

C++ での私の経験に基づくと、ほとんどの人がまだヘッダー ファイルに .h を使用しているようです。

于 2013-01-30T14:50:35.280 に答える