clang-complete
2015年05月27日

概述

clang补全插件,可以根据clang进行语义补全.
这里需要注意的是 clang_user_options变量
-std=c++0x 在补全中支持c++0x 例如auto lambda支持等等
但是在makefile的编译命令仍然需要添加-std=c++0x,这是为了增加编译支持
-stdlib=libc++ libc++是clang提供的c++标准库…有别于gnu的b++标准库libstdc++
对于补全功能的触发
必须保证程序能够正确编译通过(不确定是否需要先编译一次).
对于qt补全功能

# 创建项目文件,可以打开看一下.文件列出的是项目所包含的所有源码文件,所以每次添加新文件的时候,需要重新执行命令
qmake -project
# 生成Makefile文件,默认使用gcc g++编译 但是为了使用clang补全,所以需要手动修改CXX变量
qmake
vim Makefile
CXX=~/.vim/bundle/clang-complete/bin/cc_args.py g++

经过测试新添加文件,也不需要重新执行qmake命令创建Makefile文件.(可能有误).
但是在添加新的头文件信息的时候,有必要make clean,然后重新编译.否则可能出现段错误(Segmentation fault).
qt与基本c++一样,也需要保证能够正确编译,才可以补全信息
尤其在定义class时,不要忘记 Q_OBJECT

class xxx
{
    Q_OBJECT //一定不能忘记,否则不能补全
    public:
        ...
};
make clean
make

如果还不能补全,重新打开vim
g++/clang++ 不支持模板定义和实现分离,需要写在一个文件里
顺带区分下几个概念

  • boost c标准库 有标准委员会提供
  • glibc gnu c标准库,linux的底层核心库.为了更好的操纵c而设计,可能
  • glib gtk library
  • libstdc++ gnu c++标准库,与g++ 配套
  • libc++ clang c++标准库,与clang 配套,但clang 兼容libstdc++.所以用libstdc++或者libc+=均可…但是感觉后者更合适