YouCompleteMe C/C++ VIM CMake 工程 代码提示不可用问题

YouCompleteMe介绍

如果安装完YouCompleteMe并配置好后(本站有过程记录,点击这里查看),就可以使用单文件来检测代码提示效果了。但是,当S&E打开他的C/C++工程时,却发现代码提示、跳转等功能不能正常使用。在查阅文档后,S&E发现原来是YouCompleteMe相关的索引数据库没有建立,相关的编译选项并不正确,所以YouCompleteMe所使用的的clangd就不能将多个源文件联系起来。

建立 C/C++ VIM 代码提示索引的方法

如果是使用CMake建立工程,则可以在CMakeList.txt中加入

set( CMAKE_EXPORT_COMPILE_COMMANDS ON )

或者在命令行cmake后加上-DCMAKE_EXPORT_COMPILE_COMMANDS=ON也行

建立索引的原理

YouCompleteMe读取由构建系统CMake生成的编译数据库(通常名字叫做compile_commands.json),这样就可以完成对于工程文件的索引。而编译数据库包含项目中每个编译单元的编译器调用。YouCompleteMe会寻找打开文件所在目录中的compile_commands.json,如果没找到会递归地向上查找这个文件。如果在它找到.ycm_extra_conf.py之前,找到了compile_commands.json,那么它就会停止搜索,然后,让clangd处理接管并处理该文件中含有的标志。

在完成上述这些操作后,YouCompleteMe的相关功能就可以正常使用了。