YouCompleteMe no analiza #include

YouCompleteMe no analiza #include

Tu me completasfuncionó bien hasta que actualicé Ubuntu de 16 a 18.

Ahora no entiende using std::cin;decir

ningún miembro llamado 'cin' en el espacio de nombres 'std'; ¿Quiso decir 'min'?

Tampoco lee los nombres de clases definidos en mis propios archivos de encabezado.

Intenté reinstalar YouCompleteMe, git pullla última versión git submodule update.

También verifiqué/actualicé la ruta a libclang en /usr/lib/llvm-8/lib/libclang.so.vimrc y la ruta a la biblioteca estándar de C++ /usr/include/c++/7/en .vim/.ycm_extra_conf.py

Todo el código fuente de C++ se compila sin errores con indicadores de compilación casi idénticos.

Respuesta1

Después de seguir el README enPágina de GitHub de YouCompleteMey correr

$ 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.
...

Vaya a ~/.vim/.ycm_extra_conf.py y agregue las rutas posteriores #include <...> search starts here:en la matriz de banderas con '-isystem' antes de cada una y elimine las inclusiones antiguas.

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',
 # ...
]

Reinicie vim y el problema se solucionará.

información relacionada