October 31, 2015

vim の c++ 補完 on debian(個人メモ)

Debian で c++ の開発環境を整えるにあたって、少しトラブったのでメモ。

開発環境というか関数の補完機能を付けたかったわけだが、ちょっとググった範囲では、justmao945/vim-clangRip-Rip/clang_complete が有名 & 良さそう感じ。

ちょっと使った感じの違いとしては、vim-clang は速くてサクサク動く。 対して、clang_complete はちょっとモッサリしているが関数の戻り値や引数の型まで教えてくれる。 (clang_complete は boost を使うと挙動の遅さが少し気になるレベル。)

ただ、問題は両者とも gcc ではなく clang を前提としている事。 なので、mac では neobundle で vim のパッケージ入れるだけで OK だったが、debian では若干手こずる。

clang_complete だが、vim のプラグインと clang をインストールしただけでは動かなかった。 (vim のプラグインを入れた後、$ sudo apt-get install clang) 一応、debian sid, debian jessied で試したが、共に動かず

でも、「ubuntu で動かした」という記事が多く見られる。 試しに trusty (ubuntu 14.04) で、同じ方法でやってみる。 すると、問題無く動く。

そんなバナナ!

trusty、jessie ともに debian sid を freeze、ちょっとモゴモゴして作ったもの。 リリース時期は 2014年4月。 ほとんど変わらないはず。 canonical め、何をモゴモゴしたんだ!

まあ、どうせ library のパスか何かだろうなと思ってよく見ると、 上手く動かない debian では libclang が見つからないから g:clang_library_path をセットしろというメッセージが出ていうるではないか! Rip-Rip さん、ちゃんとサニタイズ & エラーメッセージしてくれて、ありがとうございました。 対して俺は失格ですね。 エラーメッセージくらい、最初に見ろと。

まあ、結論から言うと let g:clang_library_path = '/usr/lib/llvm-3.6/lib/libclang.so とやったら、ちゃんと動いてくれた。 まあ llvm のバージョンは頻繁に変わると思うので注意。

vim-clang? 知らね。 個人的には clang_complete の方が気に入ったし、解決するの面倒。

一応、自分メモとして残しておく。