YouCompleteMe が #include を解析しない

YouCompleteMe が #include を解析しない

ユーコンプリートミーUbuntu を 16 から 18 にアップグレードするまでは正常に動作していました。

using std::cin;今では理解できない

名前空間 'std' に 'cin' という名前のメンバーがありません。'min' を意味しましたか?

また、独自のヘッダー ファイルで定義されたクラス名も読み込まれません。

git pull最新バージョンのYouCompleteMe を再インストールしてみましたgit submodule update

また、.vimrc内のlibclangへのパスと.vim/.ycm_extra_conf.py内/usr/lib/llvm-8/lib/libclang.soのC++標準ライブラリへのパスを確認/更新しました。/usr/include/c++/7/

すべての C++ ソース コードは、ほぼ同じコンパイル フラグでエラーなしでコンパイルされます。

答え1

READMEに従ってYouCompleteMe github ページそして走る

$ echo | clang -v -E -x c++ -
clang version 8.0.0-3~ubuntu18.04.1 (tags/RELEASE_800/final)
...
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward
 /usr/include/clang/8.0.0/include
 /usr/local/include
 /usr/include/i386-linux-gnu
 /usr/include
End of search list.
...

~/.vim/.ycm_extra_conf.py に移動し、フラグ配列の後にパスを追加し、#include <...> search starts here:それぞれの前に '-isystem' を付けて、古いインクルードを削除します。

flags = [
 # ...
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0',
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0',
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward',
 # ...
]

vim を再起動すると問題は解決します。

関連情報