Warum findet Qt Creator keine Header in den eingeschlossenen Pfaden - obwohl qmake sie finden kann

9

Ich habe mich einem bereits bestehenden (opensource-) Qt 4-Projekt angeschlossen, um einige Funktionen hinzuzufügen. Das Projekt kompiliert und läuft perfekt auf Linux Slackware mit Qt 4.8.5. Als IDE habe ich zuerst KDevelop verwendet (kommt mit Slackware), aber Qt-Projektdateien werden in KDevelop nicht unterstützt (da es hauptsächlich cmake verwendet, musste ich das Makefile verwenden, um das Projekt zu importieren). Jetzt möchte ich zu Qt Creator wechseln, aber Header-Dateien in eingeschlossenen (relativen) Pfaden werden nicht erkannt. Zum Beispiel befindet sich die Projektdatei in "dir0 / programs / prog1 / prog1.pro" und einige zusätzliche Header befinden sich in "dir0 / gui / extra.h". "dir0 / gui" wird dem Suchpfad durch die Zeile INCLUDEPATH += ../../gui in der Projektdatei hinzugefügt. Wenn ich den Mauszeiger über #include "extra.h" in einer .h-Datei des Projekts halte, bekomme ich immer ein Popup mit der Aufschrift "extra.h: Keine solche Datei oder Verzeichnis".

In KDevelop gab es kein Problem und auch qmake bekommt es. Was ist das Problem des Schöpfers (ich benutze 2.8, und versuchte auch 3.0)

Jede Hilfe sehr geschätzt: -)

Konrad

EDIT: Ich habe gerade festgestellt, dass das gesamte Qt-Framework von qt-creator nicht erkannt wird. Wenn ich #include " eintippe, befinden sich die von der automatischen Vervollständigung vorgeschlagenen Header entweder in "/ usr / include" oder im Projektverzeichnis. Zum Beispiel kann ich nicht #include <QtGui> machen.

Was könnte das Problem hier sein?

EDIT2: Die Projektdatei enthält auch gui.pri und local.pri, die auch von mehreren anderen Projekten verwendet werden. Ich habe versucht, die Dateien ein wenig zu komprimieren - es kompiliert immer noch ohne Probleme.

aktuelle Projektdatei in "dir0 / programs / us_convert"

%Vor%

gui.pri befindet sich in "dir0 /"

%Vor%

Und local.pri, auch in "dir0 /"

%Vor%     
user3122343 20.12.2013, 10:44
quelle

3 Antworten

2

Ich benutze premake und mache meine Projekte und QtCreator als IDE. Ich hatte das gleiche Problem wie Sie, indem ich die Header-only Library GLM verwendete. Mein Quellcode enthielt folgende Zeile: %Code%. Es kompilierte ohne Fehler, aber QT-Creator konnte die Datei nicht finden, daher konnte ich nicht zu ihr springen oder Funktionen ausführen, indem Sie STRG gedrückt halten und auf eine Funktion der Bibliothek klicken.

In meinem Projektordner befindet sich eine Datei namens "Tree.includes", wobei "Tree" der Name meines QT-Creator Projekts ist. Ich musste den Pfad zu der Bibliothek hinzufügen, die ich benutze und es hat funktioniert.

#include <glm/glm.hpp>

Meine "Tree.includes" -Datei sieht folgendermaßen aus:

%Vor%

Mein Projektordner sieht so aus:

%Vor%     
Boris Month 19.01.2015 13:32
quelle
2

Ich weiß, dass meine Antwort zu spät ist, aber ich hatte das gleiche Problem und es gab keine Lösung in Tonnen von verschiedenen Posts, aber dann fand ich eine Lösung, die für mich funktionierte:

Sie müssen das Modul, das Sie verwenden, in Ihre .pro-Datei einfügen:

Zum Beispiel wollte ich das #include<QtSql> Modul verwenden, aber nichts hat funktioniert. Der Compiler hat diese Datei nicht gefunden. Ich fand heraus, dass ich in der Lage war, #include<QtSql/QSqlDatabase> (und alle Typen, die in QtSql deklariert sind), aber dann bekam ich einen "undefined reference" Fehler.

Die Lösung: Sie müssen das Modul, das Sie verwenden, in Ihrer .pro-Datei in der folgenden Zeile hinzufügen:

%Vor%

(So sah es für mich standardmäßig aus) So sieht es jetzt für mich aus und wie es für mich funktionierte:

%Vor%

Hoffe das hilft jemand anderem, der die gleichen Probleme hat.

Das hat sowohl unter Windows als auch unter Ubuntu funktioniert!

    
ElectRocnic 20.03.2016 22:51
quelle
0

Sie sollten die HEADER auch in die .pro-Datei aufnehmen.

%Vor%

Speichern Sie anschließend Ihr Projekt und lassen Sie es analysieren. Dann lösche den vorhandenen Build-Ordner (nicht nur bereinigen) und versuche dann, den Build-Ordner neu zu erstellen.

    
Abhishek Bansal 20.12.2013 15:08
quelle