http://uguisu.skr.jp/Windows/gtags.html
GNU GLOBAL(gtags)は、ソースコードのタグジャンプです。簡単に複数のソース中から関数や、変数の定義元/参照元を見つけ、その箇所に移動することができます。
ctags、etags(cygwin や Linux に大抵標準で含まれています)と同じ働きをしますが、gtags はさらに強力な機能を持っています。大量の他人の書いたソースを読むプログラマには、必須だと思います。
通常のインストールと同様です。cygwin 上でも、最近のものを利用する場合は問題ありません。
- tar zxvf global-x.x.x.tar.gz(もしくは gzip -dc global-x.x.x.tar.gz | tar xv -)
- cd global-x.x.x
- ./configure (--prefix=任意の場所)
- make
- make install
なお、Cygwin の場合は、+Devel から、gcc, make を予めインストールしておいて下さい。
また、Cygwin の /usr/local/bin(例: C:/cygwin/usr/local/bin) にPATHを通しましょう。
emacsを利用する場合は、任意のフォルダに global-x.x.x ディレクトリ内にある 「gtags.el」 をコピーしてください。
※ 「.emacs」に以下の一文を追加してください。(下記は「~/lisp」に「gtags.el」をコピーした場合です)
;; load-pathに追加
(setq load-path (cons "~/lisp" load-path))
Meadowを利用する場合は、C:/Meadow/site-lisp ディレクトリに global-x.x.x ディレクトリ内にある 「gtags.el」 をコピーしてください。
「gtags.el」の移動
vi を利用する場合は、「$HOME/.vim/plugin」フォルダに 「gtags.vim」 をコピーしてください。
cp /usr/local/share/gtags/gtags.vim $HOME/.vim/plugin
使用方法
プログラムソースのあるトップのディレクトリで、次のコマンドを入力します。
gtags -v
ファイル数によっては、かなりの時間を要します。
しばらくすると、「GPATH」「GRTAGS」「GSYMS」「GTAGS」のファイルが作成されます。
実際に利用したファイルサイズは、次のようなものです(ファイル数 152個)。
$ ls -lh
total 4.0M
-rw-r--r-- 1 hoge なし 32K May 1 02:07 GPATH
-rw-r--r-- 1 hoge なし 2.6M May 1 02:07 GRTAGS
-rw-r--r-- 1 hoge なし 736K May 1 02:07 GSYMS
-rw-r--r-- 1 hoge なし 552K May 1 02:07 GTAGS
drwxr-xr-x+ 12 hoge なし 0 May 1 01:59 global-4.8.5/
また、HTML化は次のコマンドで可能です。
htags -saF
ただし、非常に大きなファイルとなり、時間もかかります。
emacs/Meadow 上での使用方法
emacs/Meadow を起動して、次のコマンドで gtags モードに変更できます。
M-x gtags-mode
このとき、「.emacs」に以下を追加しておけば、便利になります。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GNU GLOBAL(gtags)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
'(lambda ()
(local-set-key "/M-t" 'gtags-find-tag)
(local-set-key "/M-r" 'gtags-find-rtag)
(local-set-key "/M-s" 'gtags-find-symbol)
(local-set-key "/C-t" 'gtags-pop-stack)
))
- Ctrl+t gtagsでジャンプする一つ前の状態に戻る
- Alt+s 指定した変数、定義の定義元を探す
- Alt+r 指定した関数が参照されている部分を探す
- Alt+t 指定した関数が定義されている部分をさがす
使い方は、ジャンプしたい関数上で、上記のコマンドを入力します。
なお、Cygwin+Meadow環境では、正しくソースの位置を表示してくれない問題があります。
次のように表示され、正しいソースのある場所を誤ってしまいます。
Use C-u M-x make-directory RET RET to create directory and its parents
Cygwin パスを理解させたいのであれば、次のElisp を利用して下さい。
- cygwin-mount.el : http://www.emacswiki.org/elisp/cygwin-mount.el
ダウンロードした「cygwin-mount.el」は「C:/Meadow/site-lisp」に置きましょう。
また、「.emacs」に以下を追加しておきます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; cygwin-mount
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (and (featurep 'meadow) (locate-library "cygwin-mount"))
(require 'cygwin-mount)
(cygwin-mount-activate))
vim 上での使用方法
:Gtags main
で global -t main を実行し、結果をエラーウィンドウで開く。
'-r' で参照元一覧をエラーウィンドウに表示
:Gtags -r func1
main.c 内のオブジェクト一覧
:Gtags -f main.c <- locate objects in main.c
% や # も使える
:Gtags -f % <- locate objects in main.c
コマンドライン 上での使用方法
例えば、「grep」関数が、どのファイルで定義されているかは、次のように調べます。
$ global grep
global-4.8.5/global/global.c # grep() は global.c で定義されている
&#39;-t&#39; オプションで ctags フォーマット表示
$ global -t help
help global-4.8.5/global/global.c 103
help global-4.8.5/gozilla/gozilla.c 76
help global-4.8.5/gtags-parser/gctags.c 132
help global-4.8.5/gtags/gtags.c 110
help global-4.8.5/htags/htags.c 256
&#39;-r&#39; オプションで参照元表示。help() は 次のファイルで参照されている。
$ global -r help
global-4.8.5/global/global.c
global-4.8.5/gozilla/gozilla.c
global-4.8.5/gtags-parser/gctags.c
global-4.8.5/gtags/gtags.c
global-4.8.5/htags/htags.c
&#39;-x&#39; オプションで詳細表示
$ global -x grep
grep 755 global-4.8.5/global/global.c grep(pattern)
&#39;-a&#39; オプションで絶対パス表示
$ global -a grep
/home/hoge/global-4.8.5/global/global.c
global下载
http://www.gnu.org/software/global/