Emacs で GNU Globals を動作させようとしましたが、関数定義が見つからないことがわかりました。長い検索の後、GNU グローバル自体がどういうわけか壊れてしまい、ほとんど何もインデックス化されません! 例を考えてみましょう:
$ cat test.cpp
class Foo {
public:
int myint;
short myshort;
char mychar;
};
int main() {
Foo obj;
obj.myint = 0;
return 0;
}
$ gtags
$ global Foo
test.cpp
$ global myint
$ global -r myint
$ global Foo::myint
$ global -r Foo::myint
$ cat GTAGS | grep myint
最後に «myint» を grep しようとしたところ、GTAGS にも存在しないことがわかりました! それが言及されている唯一の場所は GSYMS ファイルです。もちろん、最初は別の «.hpp» ファイルで同じコードを試しましたが、うまくいきませんでした。
更新: ctags と etags の両方でグローバル タグを作成できることがわかりました。そのためには、発行export GTAGSLABEL=/usr/bin/etags
(または ctags に対して)して、再度起動する必要がありgtags
ます。変数は機能します。間違ったパスを追加することで簡単に確認できるため、gtagsはエラーについて通知します。そのため、私の例で両方のバックエンドを試しましたが、どちらも機能しませんでした。