Ich habe eine Qt-Widget-C ++ - Klasse, die eine in Qt Creator erstellte ui-Datei lädt. Der Header und die Quelldatei für die Klasse leben in zwei separaten Verzeichnissen. Ich habe Probleme, cmake / automoc anzuweisen, den Header für die Klasse zu finden. cmake erkennt, dass es die C ++ - Datei mocieren muss, aber es kann den analogen Header nicht finden.
Gibt es etwas, was ich tun kann, um zu helfen, die Dateien zu finden?
Alles funktioniert gut, wenn sowohl die cpp- als auch die Header-Datei im selben Verzeichnis liegen. Dies geschieht nur, wenn die Header an anderer Stelle sind.
Meine Verzeichnisstruktur ist
%Vor%In src / include / Foo / Bar.h habe ich:
%Vor%In der Datei src / Foo / Bar.cpp:
%Vor%Meine CMakeLists.txt in src / lib / Foo ist wie folgt eingerichtet:
%Vor%Wenn ich cmake ausführe, erhalte ich den folgenden Fehler:
AUTOGEN: error: /automoc/src/lib/Foo/Bar.cpp Die Datei enthält die MOC-Datei "moc_Bar.cpp", konnte aber den Header "Bar {.h, .hh, .h ++ ,. hm." nicht finden , .hpp, .hxx, .in, .txx} "in / automoc / src / lib / Foo /
Versuchen Sie den folgenden Trick:
1) Setzen Sie beide ursprünglichen .h und .cpp in den Bibliotheksquellenordner:
%Vor%2) Im öffentlichen Include-Verzeichnis erstellen Sie eine weitere Bar.h:
%Vor%Mit dem Inhalt:
%Vor%Wirkliches Beispiel für diesen Ansatz Ссылка