YouCompleteMe не анализирует #include

YouCompleteMe не анализирует #include

Ты дополняешь меняВсе работало нормально, пока я не обновил Ubuntu с 16 до 18.

Теперь он не понимает, using std::cin;говоря:

нет члена с именем «cin» в пространстве имен «std»; вы имели в виду «min»?

Он также не считывает имена классов, определенные в моих собственных заголовочных файлах.

Я попробовал переустановить YouCompleteMe, git pullпоследнюю версию git submodule update.

Я также проверил/обновил путь к libclang /usr/lib/llvm-8/lib/libclang.soв .vimrc и путь к стандартной библиотеке C++ /usr/include/c++/7/в .vim/.ycm_extra_conf.py

Весь исходный код 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, и проблема будет устранена.

Связанный контент