INCLUDEPATH im Projektfile klappt nicht

Verschiedenes zu Qt
Antworten
Natter
Beiträge: 8
Registriert: 30. Januar 2013 11:12

INCLUDEPATH im Projektfile klappt nicht

Beitrag 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:

Code: Alles auswählen

SOURCES += qtio-demo.cpp ../qstd/qstd.cpp
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..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Natter
Beiträge: 8
Registriert: 30. Januar 2013 11:12

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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:

Code: Alles auswählen

HEADERS += ../qstd/qstd.h
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Natter
Beiträge: 8
Registriert: 30. Januar 2013 11:12

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag von Christian81 »

Wie schon gesagt - im pro-file müssen die Sources und Header mit korrekten Pfad angegeben werden - da gibts keinen Suchpfad.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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).
Natter
Beiträge: 8
Registriert: 30. Januar 2013 11:12

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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.
BDifferent
Beiträge: 2
Registriert: 4. Februar 2013 10:24

Re: INCLUDEPATH im Projektfile klappt nicht

Beitrag 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.
Antworten