Seite 1 von 1
INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 11:01
von Natter
Ich versuche gerade mich in Qt mit Hilfe eines Buches (von Alan und Paul Ezust) einzuarbeiten. Allerdings kommt es beim kompilieren der Beispielprogramme immer zu Fehlermeldungen, weil Quelldateien und Header nicht gefunden werden (der Fehler tritt schon beim Ausführen von qmake auf). Ich konnte das Problem inzwischen etwas eingrenzen. So klappt das compilieren z.B. wenn ich alle benötigten Dateien ins gleiche Verzeichnis kopiere, oder im Projektfile die Pfadangabe für jede Datei extra setze. Hier mal das Projektfile:
Code: Alles auswählen
CONFIG += debug console
DEFINES += QT_NOTHREAD_DEBUG
CONFIG -= moc
INCLUDEPATH += . ../qstd
DEPENDPATH += ../qstd
# Input
SOURCES += qtio-demo.cpp qstd.cpp
HEADERS += qstd.h
Wenn ich bei den Sources den Pfad direkt angebe, klappt es allerdings:
Damit wird qstd.cpp gefunden.
Was hat es mit INCLUDEPATH auf sich? Ich hab dazu nichts gefunden, was mir das fehlerhafte Verhalten erklären könnte (auch in der Doku nicht). Hat sich für die Version 5.0 da was geändert (die Beispiele im Buch wurden mit 4.7 getestet)? Vielen Dank schonmal, und sorry wenn das eine dumme Frage ist, aber ich hab mich schon Tage mit dem Problem rumgeschlagen und komme einfach nicht weiter..
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 13:36
von Christian81
Includepath sagt aus wo der Compiler Header-Dateien sucht, nicht wo die Sourcen rumliegen... siehe auch Doku:
http://qt-project.org/doc/qt-4.8/qmake- ... ncludepath
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 15:59
von Natter
Hmm, das würde wohl erklären, warum er die qstd.cpp nicht findet, allerdings frage ich mich dann, wieso das früher (bis Version 4.7) funktionieren konnte? Und wie müsste ich denn vorgehen, wenn ich auch Source-Files aus anderen Verzeichnissen verwenden will? Muss ich dann für jede Datei nachträglich die Pfadangabe in der Projekt-Datei ergänzen? Das muss doch auch irgendwie einfacher machbar sein ^^
Übrigens findet er auch die qstd.h nicht. qmake liefert als Fehlermeldung:
Code: Alles auswählen
WARNING: Failure to find: qstd.cpp
WARNING: Failure to find: qstd.h
Das Problem lässt sich auch für qstd.h nur lösen, wenn ich bei HEADERS den Pfad mit angebe:
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 16:06
von Christian81
Die Angaben der SOURCES und HEADERS haben nicht mit dem Include-Pfad für den Compiler zu tun. Und mit 4.7 ging das auch nicht.
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 16:27
von Natter
Christian81 hat geschrieben:Die Angaben der SOURCES und HEADERS haben nicht mit dem Include-Pfad für den Compiler zu tun. Und mit 4.7 ging das auch nicht.
Hmm, dann hab ich dort wohl irgendwas durcheinandergebracht (in dem obigen Link steht dazu ja leider auch nur ein Satz, aus dem ich nicht so recht schlau werde). Also liegt das Problem nicht bei INCLUDEPATH sondern woanders. Natürlich wäre es eine Erklärung, dass einfach sämtliche Beispiele aus dem Buch "An Introduction to Disgn Patterns in C++ with Qt" fehlerhaft sind, aber irgendwie kann ich mir das auch nicht so recht vorstellen, zumal die angeblich alle mit der Version 4.7 getestet wurden. Gibts noch irgendeine Idee, womit das Zusammenhängen könnte?
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 19:32
von Christian81
Wie schon gesagt - im pro-file müssen die Sources und Header mit korrekten Pfad angegeben werden - da gibts keinen Suchpfad.
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 1. Februar 2013 21:54
von brax
Nein, der include Path hat idR nichts mit Deinen eigenen Quellen zu tun, sondern wird eigentlich für die Benutzung von anderen Klassenbibliotheken benutzt.
Der Begriff "includepath" ist ein feststehender Begriff, was wohl der Grund ist, warum die von Christian verlinkte Doku da nur mit einem Satz drauf eingeht -> C++ Grundlagen (tut mir leid, ist aber so).
Natter hat geschrieben: Natürlich wäre es eine Erklärung, dass einfach sämtliche Beispiele aus dem Buch "An Introduction to Disgn Patterns in C++ with Qt" fehlerhaft sind, aber irgendwie kann ich mir das auch nicht so recht vorstellen
Um ehrlich zu sein, würde mich das gar nicht so sehr wundern (leider). Es gibt wo viele Bücher - gerade bei Qt - die nur so von Fehlern strotzen... Bisher habe ich noch keinQt-Buch gelesen (und ich habe einige in den Finger gehabt, in der Hoffnung, etwas neues zu lernen), was wirklich gut war. Das allerwichtigste ist, C++ wirklich zu verstehen und solide Kenntnisse zu haben. Wenn man dann an Qt ran geht, ist die (hervorragende) Qt eigene Doku alles was man braucht. Wenn die nicht reicht, muss man a) nochmal die C++ Grundlagen pauken oder b) nochmal die Englisch Grundlagen pauken (es ist nun wirklich kein schweres Englisch).
Nebenbei: Dieses Buch kenn ich nicht, aber der Titel klingt erstmal seltsam... Qt ist nicht unbedingt das beste Beispiel für Design Patterns, außer es geht nur um MVC, PIMPL und Singletons (das letzte ist in 90% der Fällen wo es benutzt wird eher ein Anti-Pattern, aber das ist ein ganz anderes Thema).
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 2. Februar 2013 10:57
von Natter
Vielen Dank für die vielen Antworten. Also mein Unverständnis bezüglich der Doku zu INCLUDEPATH liegt sicher nicht an der Doku, sondern mehr daran, dass ich als totaler Anfänger gleich bei meinen ersten Beispielprojekten die ich mir anschauen wollte, auf Probleme gestoßen bin (trifft übrigens auch auf die im Qt-Paket mitgelieferten Demos zu - da hab ich aber inzwischen auch schon rausbekommen, dass die tatsächlich fehlerhaft sind, was dann mit 5.01 behoben wird). Und dann habe ich halt den Fehler gemacht, nicht einfach das Problem zu schildern, sondern meine eigene Schlussfolgerung bezüglich INCLUDEPATH mit in die Frage zu packen. Wenn das aber nix mit dem Problem zu tun hat, kann die Doku dazu natürlich auch keine Hilfestellung bieten.
Zu dem Buch - ich hatte das letztlich gewählt, weil es noch mit die besten Bewertungen erhalten hat - zumindest nach den ersten ca. 200 Seiten würde ich es aber auch nicht unbedingt empfehlen, da es imho doch arg durcheinander geht, und sich die Autoren wohl auch nicht richtig überlegt haben, ob sich das Buch nun an Anfänger mit C++ und Qt richten soll, oderdoch eher an Fortgeschrittene.
Re: INCLUDEPATH im Projektfile klappt nicht
Verfasst: 4. Februar 2013 11:29
von BDifferent
Hallo,
ich hatte ein ähnliches Problem - bin auch Qt-Einsteiger und hatte mit Qt4 angefangen und jetzt versucht, das bestehende Projekt in Qt5 weiterzubearbeiten. Sehr wichtig, damit die GUI funktioniert, ist, im Projektfile folgendes hinzuzufügen:
QT += widgets
Siehe
http://qt-project.org/wiki/Transition_f ... 4.x_to_Qt5
Möglicherweise musst du auch noch die Include-Pfade anpassen, dies ist hier beschrieben:
http://www.kdab.com/porting-from-qt-4-to-qt-5/
Vielleicht hilft das ja auch dir weiter.