2018/02/03

[vscode][c/c++]「すべての参照を検索」を使いたい

vscodeを使っているが、コンテキストメニューに「すべての参照を検索」という項目がある。
きっと、関数名を選択して実行すると、うまいことgrepして、呼び出し箇所の一覧を出してくれるに違いない!

そう思って実行するのだが、結果が見つからない、というようなことをいわれてしまう。
あの葡萄は酸っぱいんだ、そう思って忘れようとしていた。

が、放置していてもどうしようもないので、ちゃんと調べよう。
うちの環境は、こうだ。

  • Windows10 64bit(Fall Creator)
  • Visual Studio Code 1.19.3
    • 統合コンソールはWSL
  • C++ Intellisense 0.2.2



まず、vscodeに、拡張機能のC++ Intellisenseをインストール。

https://marketplace.visualstudio.com/items?itemName=austin.code-gnu-global

設定はここに書いてある。
拡張機能単体では動かず、GNU Globalというものがいるそうだ。

https://www.gnu.org/software/global/

ここのDownloadからたどっていって、6.5.6のWin32版をダウンロード。

http://adoxa.altervista.org/global/dl.php?f=win32

zipがとれるので、適当に展開。
PATHに追加するか、settings.jsonに追加すればよいそうだ。
コマンドラインからは使わないだろうから、settings.jsonに追加。

・・・vscodeから「そんな変数はない」という青い波線が表示されるのだが、大丈夫なんだろうか?


ここまでやって、実行してみた。
やはり、結果が出てこない。
そもそも、Globalが呼び出されているのかどうかが分からん。

vscodeのメニューを見ていると、「ヘルプ > 開発者ツールの切り替え」というものがあった。
選択すると、右側にブラウザの開発ツールのようなものが出てきた。
上のタブに「Console」があったので選択すると、実行したと思われるログが出ていた。

image

青い波線が出ていても、ちゃんと読んでるんだ。
そして、呼び出しているが、GTAGSがないとのこと。
`gtags` を実行するとよいらしいし、自動でやってほしいならオプションを付ければよいようだ。


せっかくなので、WSLにapt install globalでglobalをインストールし、gtagsした。
なんか、4つくらいファイルができたので、.gitignoreに追加しておいた。
そして、もう一度実行!

・・・GTAGSのファイルフォーマットが古いと言われた。
WSLにインストールされたのは、5.7.1だ。

こちらを読むと、バイナリをダウンロードできるらしい。
https://qiita.com/akegashi/items/042c659c856d2092c443

$ wget http://launchpadlibrarian.net/301614632/global_6.5.6-2_amd64.deb
$ sudo apt install emacsen-common libc6 libltdl7 libncurses5 libtinfo5
$ sudo dpkg -i global_6.5.6-2_amd64.deb

これで、gtagsしなおして、検索を実行すると、今度は出てきた。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。