YouCompleteMe não analisa #include

YouCompleteMe não analisa #include

Você me completafuncionou bem até eu atualizar o Ubuntu de 16 para 18.

Agora não entende using std::cin;dizer

nenhum membro chamado 'cin' no namespace 'std'; você quis dizer 'min'?

Ele também não lê nomes de classes definidos em meus próprios arquivos de cabeçalho.

Tentei reinstalar o YouCompleteMe, git pulla versão mais recente, git submodule update.

Também verifiquei/atualizei o caminho para libclang em /usr/lib/llvm-8/lib/libclang.so.vimrc e o caminho para a biblioteca padrão C++ /usr/include/c++/7/em .vim/.ycm_extra_conf.py

Todo o código-fonte C++ é compilado sem erros com sinalizadores de compilação quase idênticos.

Responder1

Depois de seguir o README emPágina YouCompleteMe no githube corra

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

Vá para ~/.vim/.ycm_extra_conf.py e adicione os caminhos depois #include <...> search starts here:na matriz de flags com '-isystem' antes de cada um e remova as inclusões antigas.

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 o vim e o problema será corrigido.

informação relacionada