Open Shougo opened 10 years ago
報告ありがとうございます。
インクルードディレクトリの問題は難しいですね…。
path
に対して自動的にインクルードディレクトリを設定するプラグインがあれば便利そう。
ひとまずドキュメントに追記しておこうと思います。
ありがとうございました。
path に対して自動的にインクルードディレクトリを設定するプラグインがあれば便利そう。
便利そうですね。
あとは、上記のスクリプトだと/usr/local/include/
以下に対応していません。バージョン違いのライブラリがある場合も無力です。そのあたりもきちんと対応させたいですが、なかなか難しく……。
あとは、上記のスクリプトだと/usr/local/include/以下に対応していません。バージョン違いのライブラリがある場合も無力です。そのあたりもきちんと対応させたいですが、なかなか難しく……。
ここら辺を自動化するのは大変そうですね…。 インクルードディレクトリを参照するのは neocomplete/neocomplcache や marching.vim 以外にも clang_complete や quickrun.vim などにも関わってくるのでやっぱり外部プラグインで用意した方がスマートな気がしますね。 clang_complete とかはどうしているのだろうか。
clang_completeのコードを見てみました。どうやら、path
の値に頼っているようです。あとはプロジェクトの設定の.clang_completeで設定するか。
あとは clang のディレクトリを追加している感じなのかな。 https://github.com/Rip-Rip/clang_complete/blob/master/plugin/libclang.py#L27
みたいですね。これはvim-marchingでも使える手だとは思います。
YouCompleteMeはclangのヘッダファイルを同梱しているみたい。理由は謎ですが……。
YouCompleteMeはclangのヘッダファイルを同梱しているみたい。理由は謎ですが……。
YouCompleteMe のビルドに必要なので同梱しているのではないでしょうか。
ああ、そういうことですか。ビルドにclangを使うんですかね。
インクルードディレクトリはコンパイラの種類やバージョンによっても異なる場合があるため,一概に決められないのが厳しいですね…
各 OS ごとの設定例ぐらいなら書けそうですが.
ちなみに,参考までに Mac の libc++ は /usr/lib/c++/v1
にあったりします.
各環境の設定を切り替えるウマイ仕組みがほしいですねぇ。
ちなみに,参考までに Mac の libc++ は /usr/lib/c++/v1 にあったりします.
おーありがとうございます。
gccの検索パスはgcc -vしたときに分かるようですが、このパスはコンパイル時に決定するみたいですね。 汎用的な方法で得るのは難しそうです。
gccの検索パスはgcc -vしたときに分かるようですが、このパスはコンパイル時に決定するみたいですね。
なるほど、コンパイラから情報を取得するんですね。
ドキュメントに追加ed
これは本来vim-marchingでやるべきことなのかはわかりませんが、ハマりやすい問題なのも事実なので、報告しておきます。
Linux環境では一部のインクルードパスを手で設定しない限り、インクルードパスが正しく認識されません。
/usr/include
と/usr/local/include
しか 'path' に設定されていないためです。特にC++の標準ヘッダが認識されないのは致命的でした。それらのパスを自動設定する適切なftplugin/cpp.vimが存在すれば良いと思いますが、標準では存在しないようです。
lingrで報告していた、候補がおかしかったり候補が出なかったりする問題も実は原因はこれでした。
私は現在、次のように設定して対処しています。これで動作しますが、コマンドラインで渡すインクルードパスがかなり長くなってしまうのが欠点です。
ちなみに、neocomplete/neocomplcacheではC++を特別扱いして、上記のようなパスを追加しています。
プラグイン側で自動設定しないとしても、設定をドキュメントに追記するだけで有意義と思います。