作者:winterTTr 转载请注明
我想,很多人都希望能够在vim或者emacs中实现C++的自动补全,我个人也不例外。
折腾过ctags,etags,cscope,最后也折腾过cedet。说实话,cedet还是可以实现补全的,只是速度有点让人难以忍受。
上面的几种工具,都是通过对源代码进行预处理,分析出其包含的代码信息。但是,大部分程序都是通过静态分析代码,这点在代码或者头文件频繁变更的情况下,是非常让人头痛的事情。像Visual Stuido中代码补全功能,基本上全是动态的,当头文件发生变化后,补全也会马上跟着变化。
我们是否也能实现这样的功能呢?
在clang这个llvm的C++前端出现之前,或许只能说遗憾了。静态的ctags补全必须完全扫描所有的文件,这样的效率是不可以接受的。
不过现在有了clang,这为我们系提供了非常好的工具,来实现这个愿望。
准备工作
1. 不用说了,肯定是需要clang了。
clang需要自己编译。由于我使用的是windows,所以,这里有一个我自己编译的版本。
https://github.com/winterTTr/emacs-of-winterTTr/tree/master/.emacs.d/extra-bin/clang
有关环境的设置,可以参考上篇文章。
(wttr/prepend-to-exec-path "~/.emacs.d/extra-bin/c