『010』解决 Youcompleteme 支持 Python 超级烂的问题
问题:跳转不到位,经常没法跳,文档显示大部分也没有
1.
Vim 命令行YcmDebuInfo,查看信息,我这上面显示我的Clangd 为False
问题很明显,发现clang 就没有安装,安装,然后重新编译,发现还是False
2.
在Github 项目上搜索 Issue,发现一个: [1]
按照上面步骤,即进入YouCompleteMe/third_party/ycmd,然后调用Python
输入import ycm_core; ycm_core.HasClangSupport(),果然是False
3.
这一步想了很久,后来也是看到上面这个链接,说是ycmd 问题,于是还是去ycmd文件夹看看
发现有个run_test.py,运行一下,果然有问题,相关模块该安装安装,最后还是有问题,显示Werror=xxx
4.
以前遇到过这种问题,应该是编译选项的问题,当时在Makefile 里面加了一个disable-werror
但这里我不知道怎么加了,太复杂了,后来查阅资料.[2]
原来可以直接强制让GCC/G++ 编译的时候带这个命令,我怎么就没想到呢,但是注意不是这个选项
答案推荐是-Wno-error,结果试了半天,这个选项还是不行,又找资料,后来看到如果再加上-w,这个问题就解决了
5.
终于好了,之后我又查了一会,发现是自己对Wno-error 理解不到位
如果显示错误信息为-Werror=deprecated-copy,那就添加对于FLAG,为Wno-error=deprecated-copy
6.
最终解决方法
方法一
直接export CXXFLAGS="-Wno-error -w" && export CFLAGS="-Wno-error -w"
方法二
查看报错信息,例如为-Werror=deprecated-copy
则对应export CXXFLAGS="Wno-error=deprecated-copy" && export CFLAGS="-Wno-error=deprecated-copy"
说明,CXXFLAGS 是G++ 使用,CFLAGS 是GCC 使用
7.
更新:我发现其实不是Clang 的问题,其实步骤一好像就应该是False,但是好像误打误撞,是ycmd 里面要编译一下
参考资料
1. https://github.com/ycm-core/YouCompleteMe/issues/1155
2. https://stackoverflow.com/questions/28278455/gcc-with-werror-and-wno-error-unused