2014-06-26 50 views
7

我正在使用一些C++頭文件使用YouCompleteMe。頭文件不包括它需要的所有其他頭文件,以便找到它正在使用的所有類。在不修改頭文件的情況下,我可以修改我的.ycm_extra_conf.py文件讓clang知道它需要的額外頭文件嗎?YouCompleteMe,頭文件

作爲示例,假設我有三個文件「A.h」,「B.h」和「C.cc」。

C.cc

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

class A {}; 

了Bh

class B : A {}; 

在B包括文件不能在它自己的編譯,但C.cc可以正確編譯,因爲它包括事情按正確的順序。但是,如果我自己打開B.h,它會抱怨A沒有被定義。

我知道C.cc編譯正確,所以在打開B.h時如何告訴YCM在與C.cc相同的上下文中編譯它?標誌似乎不足以告訴YCM如何編譯該文件,因爲它需要與C.cc一起編譯。

+1

什麼是你的最後一句話是什麼意思? – sehe

+0

嗨sehe,我已經更新了評論,以更清楚地解釋問題。謝謝! – archgoon

回答

4

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