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的相关功能就可以正常使用了。