GNU Global не видят переменные
Я пытался заставить работать GNU Globals в моем Emacs и обнаружил, что он не может найти определения функций. После долгих поисков я обнаружил, что GNU Globals сам по себе как-то сломан, он почти ничего не индексирует! Рассмотрим пример:
$ 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" и обнаружил, что его нет в GTAGS! Единственное место, где это упоминается, это файл GSYMS. Конечно, сначала я попробовал тот же код с отдельным файлом ".hpp", он тоже не работал.
ОБНОВЛЕНИЕ: я обнаружил, что можно создавать глобальные теги с ctags и etags. Для этого нужно оформить export GTAGSLABEL=/usr/bin/etags
(или в ctags) и запустите gtags
снова. Переменная работает, ее легко проверить, добавив туда неправильный путь, поэтому gtags скажет об ошибке. Итак, я попробовал на своем примере оба бэкэнда, и ни один из них не работал.