YouCompleteMe, header files



我正在使用YouCompleteMe处理一些c++头文件。头文件不包括查找它正在使用的所有类所需的所有其他头文件。在不修改头文件的情况下,我可以修改我的.ycm_extra_conf.py文件以使clang知道它需要的额外头文件吗?

作为一个例子,假设我有三个文件"A.h","B.h"one_answers"c.c cc"。

C.cc

#include "A.h"
#include "B.h"

A.h

class A {};

B.h

class B : A {};

B包含文件不能自己编译,但是C.cc可以正确编译,因为它以正确的顺序包含内容。但是,如果我自己打开B.h,它会抱怨没有定义A。

我知道C.cc可以正确编译,那么我如何告诉YCM在打开B.h时将其编译在与C.cc相同的上下文中?标记似乎不足以告诉YCM如何编译文件,因为它需要用C.cc编译。

在您的.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',
]

最新更新