Ich bin einem bereits bestehenden (OpenSource-) Qt 4-Projekt beigetreten, um einige Funktionen hinzuzufügen. Das Projekt wird unter Linux Slackware mit Qt 4.8.5 kompiliert und läuft einwandfrei. Als IDE habe ich zum ersten Mal KDevelop verwendet (wird mit Slackware geliefert), aber Qt-Projektdateien werden in KDevelop nicht unterstützt (da es hauptsächlich cmake verwendet, musste ich das Makefile zum Importieren des Projekts verwenden). Jetzt möchte ich zu Qt Creator wechseln, aber Header-Dateien in enthaltenen (relativen) Pfaden werden nicht erkannt. Beispielsweise befindet sich die Projektdatei in "dir0/programmes/prog1/prog1.pro" und einige zusätzliche Header befinden sich in "dir0/gui/extra.h". "dir0/gui" wird durch die Zeile INCLUDEPATH += ../../gui
in der Projektdatei zum Suchpfad hinzugefügt. Wenn ich über #include "extra.h"
in einer .h-Datei des Projekts schwebe, 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 Erstellers (ich verwende 2.8 und habe es auch mit 3.0 versucht)
Jede Hilfe sehr geschätzt :-)
Konrad
EDIT: Ich habe gerade festgestellt, dass das gesamte Qt-Framework auch von qt-creator nicht erkannt wird. Wenn ich #include "
eingebe, befinden sich die von der automatischen Vervollständigung vorgeschlagenen Header entweder in "/ usr/include" oder im Projektverzeichnis. Zum Beispiel kann ich #include <QtGui>
gar nicht machen.
was könnte das Problem 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 wird immer noch ohne Probleme kompiliert.
aktuelle Projektdatei in "dir0/programme/us_convert"
include( ../../gui.pri )
QT += xml
TARGET = us_convert
HEADERS = us_convert_gui.h \
us_convert.h \
us_convertio.h \
us_experiment.h \
us_experiment_gui.h \
us_selectbox.h \
us_intensity.h \
us_get_dbrun.h \
us_mwl_data.h
SOURCES = us_convert_gui.cpp \
us_convert.cpp \
us_convertio.cpp \
us_experiment.cpp \
us_experiment_gui.cpp \
us_selectbox.cpp \
us_intensity.cpp \
us_get_dbrun.cpp \
us_mwl_data.cpp
gui.pri in "dir0 /"
# Profile include file for applications
!include( local.pri ) error( "local.pri is missing. Copy from local.pri.template and update variables as appropriate" )
TEMPLATE = app
DESTDIR = ../../bin
MOC_DIR = ./moc
OBJECTS_DIR = ./obj
VER = 10
CONFIG += $$DEBUGORRELEASE qt thread warn
unix {
LIBS += -L../../lib -lus_gui -lus_utils
LIBS += -lcrypto
LIBS += -lqwtplot3d-qt4 -lGLU
LIBS += -L$$MYSQLDIR -lmysqlclient
DEFINES += INTEL LINUX
INCLUDEPATH += $$MYSQLPATH ../../$$QWT3D/include
INCLUDEPATH += ../../gui ../../utils $$QWTPATH/include ..
}
Und local.pri, auch in "dir0 /"
DEBUGORRELEASE += debug
unix {
MYSQLPATH = /usr/include/mysql/
QWTPATH = /usr/local/qwt-5.2.2
SINGLEDIR = /usr/lib/qt/qt-solutions/qtsingleapplication/src
MYSQLDIR = /usr/include/mysql
QWT3D = /qwtplot3d-qt4/
LIBS += -L/usr/local/qwt-5.2.2/lib -lqwt
}
Ich weiß, dass meine Antwort zu spät ist, aber ich hatte das gleiche Problem und es gab keine Lösung in Tonnen verschiedener Posts, aber dann fand ich eine Lösung, die für mich funktionierte:
Sie müssen das von Ihnen verwendete Modul in Ihre .pro-Datei einfügen:
Ich wollte zum Beispiel das #include<QtSql>
-Modul verwenden, aber es hat nichts funktioniert. Der Compiler hat diese Datei nicht gefunden. Ich fand heraus, dass ich #include<QtSql/QSqlDatabase>
(und alle Typen, die in QtSql deklariert sind) jedoch konnte, aber dann bekam ich einen "undefined reference"
-Fehler.
Die Lösung: Sie müssen das Modul, das Sie in Ihrer .pro-Datei verwenden, in der folgenden Zeile hinzufügen:
QT = core gui
(So sah es standardmäßig für mich aus.) So sieht es jetzt für mich aus und wie es für mich funktioniert hat:
QT = core gui sql
Ich hoffe, das hilft jemand anderem, der die gleichen Probleme hat.
Dies funktionierte sowohl unter Windows als auch unter Ubuntu!
Ich benutze Premake und mache meine Projekte und QtCreator als IDE. Ich hatte das gleiche Problem wie Sie, als ich die Bibliothek GLM ..__ verwendet habe. Mein Quellcode enthielt die folgende Zeile: #include <glm/glm.hpp>
. Es wurde ohne Fehler kompiliert, aber QT-Creator konnte die Datei nicht finden. Daher konnte ich nicht zu der Datei oder den darin enthaltenen Funktionen springen, indem Sie die STRG-Taste gedrückt halten und auf eine Funktion der Bibliothek klicken.
In meinem Projektordner befindet sich eine Datei mit dem Namen "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.
usedLibraries/glm/
Meine "Tree.includes" -Datei sieht folgendermaßen aus:
project/src
usedLibraries/glm/
usedLibraries/glew-1.11.0/include/
usedLibraries/glfw-3.0.4/include/
Mein Projektordner sieht folgendermaßen aus:
.
├── project
│ ├── bin
│ ├── build
│ ├── gcc.txt
│ ├── include
│ ├── Makefile
│ ├── premake4.lua
│ └── src
├── Tree.config
├── Tree.creator
├── Tree.creator.user
├── Tree.files
├── Tree.includes
└── usedLibraries
├── glew-1.11.0
├── glfw-3.0.4
└── glm
Sie sollten die HEADERS auch in die .pro-Datei aufnehmen.
HEADERS += ../../gui/extra.h
Speichern Sie anschließend Ihr Projekt, und lassen Sie es analysieren. Dann delete your bestehender Build-Ordner (nicht einfach bereinigen) und dann versuchen, neu zu erstellen.