2014-06-26 4 views
7

Ich arbeite mit einigen C++ - Header-Dateien mit YouCompleteMe. Die Headerdatei enthält nicht alle anderen Headerdateien, die benötigt werden, um alle Klassen zu finden, die sie verwendet. Kann ich meine Datei .ycm_extra_conf.py ändern, ohne die Header-Datei zu ändern, damit ich weiß, welche zusätzlichen Header-Dateien benötigt werden?YouCompleteMe, Header-Dateien

Angenommen, ich habe drei Dateien "A.h", "B.h" und "C.cc".

C.cc

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

Ah

class A {}; 

Bh

class B : A {}; 

Die B-Include-Datei nicht auf seine eigene zusammenstellen können, aber C.cc korrekt kompilieren, weil es enthält Dinge in der richtigen Reihenfolge. Wenn ich jedoch B.h selbst öffne, wird es sich darüber beschweren, dass A nicht definiert ist.

Ich weiß, dass C.cc korrekt kompiliert, so wie ich YCM beim Öffnen von B.h, um es in dem gleichen Kontext zu kompilieren, die es für C.cc verwenden würde? Flags scheinen nicht ausreichend zu sein, um YCM mitzuteilen, wie die Datei zu kompilieren ist, da sie mit C.cc. kompiliert werden muss.

+1

Was ist Ihr meinen letzten Satz? – sehe

+0

Hi sehe, ich habe den Kommentar aktualisiert, um das Problem klarer zu erklären. Vielen Dank! – archgoon

Antwort

4

In Ihrem .ycm_extra_conf.py regulären Präprozessor Flags hinzufügen, z.B .:

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', 
] 
Verwandte Themen