YouCompleteMe,头文件

arc*_*oon 7 c++ vim

我正在使用YouCompleteMe处理一些C++头文件.头文件不包含它所需的所有其他头文件,以便查找它正在使用的所有类.如果不修改头文件,我可以修改我的.ycm_extra_conf.py文件,让clang知道它需要的额外头文件吗?

举个例子,假设我有三个文件"啊","Bh"和"C.cc".

C.cc

#include "A.h"
#include "B.h"
Run Code Online (Sandbox Code Playgroud)

class A {};
Run Code Online (Sandbox Code Playgroud)

BH

class B : A {};
Run Code Online (Sandbox Code Playgroud)

B包含文件不能自己编译,但C.cc将正确编译,因为它包含正确顺序的东西.但是,如果我自己打开Bh,它会抱怨A没有被定义.

我知道C.cc编译正确,那么在打开Bh时如何告诉YCM在它用于C.cc的相同上下文中编译它?标志似乎不足以告诉YCM如何编译文件,因为它需要用C.cc编译.

seh*_*ehe 7

在您.ycm_extra_conf.py添加常规预处理器标志时,例如:

flags = [
'-Wall',
'-Wextra',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
'-DUNIT_TESTS',
'-std=c++11',
'-x', 'c++',
'-isystem', '/home/sehe/custom/boost',
'-isystem', '/usr/lib/gcc/x86_64-linux-gnu/4.8/include',
'-I', 'src',
'-I', 'include',
'-isystem', '/usr/include',
'-isystem', '/usr/local/include',
]
Run Code Online (Sandbox Code Playgroud)