/ / YouCompleteMe, Header-Dateien - C ++, Vim

YouCompleteMe, Header-Dateien - C ++, Vim

Ich arbeite mit einigen C ++ - Header-Dateien mitDu vervollständigst mich. 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?

Als Beispiel nehme ich an, dass ich drei Dateien "A.h", "B.h" und "C.cc" habe.

C.cc

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

Ah

class A {};

B.h

class B : A {};

Die B Include-Datei kann nicht selbst kompiliert werden,aber C.cc wird korrekt kompiliert, weil es Dinge in der richtigen Reihenfolge enthält. Wenn ich jedoch B.h selbst öffne, wird es sich beschweren, dass A nicht definiert ist.

Ich weiß, dass C.cc kompiliert korrekt, also wie sage ich YCM beim Öffnen von B.h, um es im selben Kontext zu kompilieren, den 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.

Antworten:

7 für die Antwort № 1

In deinem .ycm_extra_conf.py Fügen Sie Ihre regulären Präprozessorflags hinzu, 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",
]