[gelöst] Qt Projekt in Vis. Studio Projekt umwandeln scheite

Verschiedenes zu Qt
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Ich finde die Fehlermeldungen eigentlich nicht besonders sinnlos. Der Fehler mit der QtGui Datei ist eigentlich auf Grund der Meldung offensichtlich. Gut man kann sich fragen ob man deswegen das Forum bemühen muss oder ein wenig nachdenken auch zu Lösung hätte führen sollen.

Und der Fehler
Compiling UI file mainwindow
1>Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
1>Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Compiling UI file mainwindow"
Ist eigentlich auch nicht sonderlich sinnlos. Ein Blick in den benutzerdefinierten Buildschritt für mainwindow sollte das Problem beheben.

Es wird immer Leute geben, die gerade erst anfangen zu lernen. Die Frage ist, ignoriert man solche Beiträge, motzt man rum oder hilft man weiter. Ich für meinen Teil wähle normalerweise Tor 1 oder Tor 3. Christian wählt häufig Tor 2.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Christian81 hat geschrieben: Was ich eigentlich will ist a nur ein kleiner Hinweis in dme pdf dass es qmake gibt und der die .vcproj-Dateien gut erstellen kann. Und schon hätten wir nicht jede Woche das gleiche zu diskutieren.
In dem Punkt muss ich dir zustimmen, da ich davon erst in diesem Thread erfahren habe und nie auf die Idee kommen würde in der qmake Doku nachzuschauen um mit Visual Studio zu arbeiten, da die beiden ja nichts miteinander zu tun haben.

Mein Test führt leider jedoch nur zu diesem Fehler
C:\Dokumente und Einstellungen\Matthias Pospiech\Eigene Dateien\Dev\Qt\QLaserDyn
amics>qmake -t vcapp QLaserDynamic.pro
WARNING: Unable to generate output for: C:/Dokumente und Einstellungen/Matthias
Pospiech/Eigene Dateien/Dev/Qt/QLaserDynamics//Makefile.Debug [TEMPLATE vcapp]
WARNING: Unable to generate output for: C:/Dokumente und Einstellungen/Matthias
Pospiech/Eigene Dateien/Dev/Qt/QLaserDynamics//Makefile.Release [TEMPLATE vcapp]
(das gleiche bei 'qmake -tp ')
Volker hat geschrieben:Ich finde die Fehlermeldungen eigentlich nicht besonders sinnlos. Der Fehler mit der QtGui Datei ist eigentlich auf Grund der Meldung offensichtlich. Gut man kann sich fragen ob man deswegen das Forum bemühen muss oder ein wenig nachdenken auch zu Lösung hätte führen sollen.
Das hier eine include Datei nicht gefunden wird ist absolut offensichtlich. Allerdings führt exakt der gleiche Code in einem nicht Visual Studio basierten Qt Projekt zu keinem Fehler. Am Code kann es anscheint also nicht liegen. Vielleicht darin wie VS ihn anders interpretiert oder Include Pfade liest. Und da liegt mein Verständnisproblem.
Volker hat geschrieben: Und der Fehler
Compiling UI file mainwindow
1>Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
1>Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Compiling UI file mainwindow"
Ist eigentlich auch nicht sonderlich sinnlos. Ein Blick in den benutzerdefinierten Buildschritt für mainwindow sollte das Problem beheben.
Mein Verständnis von QtVsAddin war bislang, dass man diese Einstellungen nicht mehr manuell vornehmen muss wenn es geladen ist.
Aber anscheint trifft das nicht zu wenn man vorhandene Dateien einfach nur zu einem Projekt hinzufügt. Den 'benutzerdefinierten Buildschritt' für jede Datei manuell hinzuzufügen ist allerdings etwas aufwändig.
Volker hat geschrieben: Es wird immer Leute geben, die gerade erst anfangen zu lernen. Die Frage ist, ignoriert man solche Beiträge, motzt man rum oder hilft man weiter.
Mir ist vollkommen klar das es sich hier um absolute basics handelt. Mein Problem ist auch nicht, dass ich den Sinn der Build Schritte nicht verstehe (das tue ich durchaus). Ich weiß nur nicht wann die Automatismen des Plugins greifen und wann nicht.
Würde man mir überhaupt nicht helfen ein Projekt überhaupt kompiliert und debuggt zu bekommen, müsste ich meine Einarbeitung in Qt gleich sein lassen, da man die Lösung zu diesen vemutlich trivialen Problemen in keinem Buch zu Qt oder C++ nachlesen kann.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

pospiech hat geschrieben: Das hier eine include Datei nicht gefunden wird ist absolut offensichtlich. Allerdings führt exakt der gleiche Code in einem nicht Visual Studio basierten Qt Projekt zu keinem Fehler. Am Code kann es anscheint also nicht liegen. Vielleicht darin wie VS ihn anders interpretiert oder Include Pfade liest. Und da liegt mein Verständnisproblem.
Das hat nichts mit dem Code zu tun, sondern mit den Einstellungen für die Include Verzeichnisse. Wie Du ja selbst gesagt hast, hast Du bei den Projekteinstellungen für die Include Verzeichnisse QTDIR/include angegeben. Wenn Du möchtest das ein #include <QtGui> funktioniert, müsstest Du zusätzlich noch QTDIR/include/QtGui angeben, da die QtGui Datei in eben diesem Verzeichnis liegt. Alternativ könntest Du auch in Visual Studio zu den globalen Include Verzeichnissen alle Qt Verzeichnisse hinzufügen, allerdings finde ich das immer nicht so sinnvoll, da kaum jemand bei uns das in seinem Visual Studio eingestellt hat und damit die Projekte nicht auf anhieb laufen, wenn man sie auf anderen Computern übersetzen will. Aber das ist Geschmackssache.
pospiech hat geschrieben: Mein Verständnis von QtVsAddin war bislang, dass man diese Einstellungen nicht mehr manuell vornehmen muss wenn es geladen ist.
Aber anscheint trifft das nicht zu wenn man vorhandene Dateien einfach nur zu einem Projekt hinzufügt. Den 'benutzerdefinierten Buildschritt' für jede Datei manuell hinzuzufügen ist allerdings etwas aufwändig.
Eigentlich ist es schon genau so gedacht. Projekt anlegen, Dateien über Visual Studio hinzufügen und dann sollte automatisch bei allen Ui Dateien der uic Build Schritt eingetragen worden sein und bei allen Header Dateien die ein Q_OBJECT enthalten der moc Build Schritt.

Was allerdings nicht funktioniert, ist ein vorhandenes Visual Studio Projekt zu nehmen bei dem die Dateien schon drin sind. Denn der Build Step wird nur beim Hinzufügen von Dateien zu einem Projekt eingetragen. Bereits darin enthaltene Dateien bleiben unberührt.
pospiech hat geschrieben: Mir ist vollkommen klar das es sich hier um absolute basics handelt. Mein Problem ist auch nicht, dass ich den Sinn der Build Schritte nicht verstehe (das tue ich durchaus). Ich weiß nur nicht wann die Automatismen des Plugins greifen und wann nicht.
Das mein PlugIn nicht kommerziellen Status hat ist mir durchaus bewusst. Wem's nützt, dem stelle ich es gerne zur Verfügung. Wer damit nicht zurecht kommt, dem kann ich versuchen zu helfen. Aber im Zweifelsfall muss ich dann auf andere Lösungen verweisen (per Hand, qmake, kommerzielle Edition, Eclipse,...), da ich das PlugIn ja nicht hauptberuflich mache.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Falscher qmake Aufruf

qmake -tp vc
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Ich habe inzwischen durch entfernen und neuen hinzufügen der ui Dateien diese auch kompilieren können.
Auch die Include Dateien sind jetzt alle richtig, so dass all cpp Dateien kompiliert werden können.

Nur die .h Datei die den MOC Buildschritt durchlaufen muss funktioniert nicht. Da bekomme ich weiterhing den Fehler
Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Moc'ing mainwindowimpl"
wobei die Anweisung die Dabei ausgeführt werden soll laut 'Buildprotokoll' folgende ist
"Param="C:\Programme\Qt4"/bin/moc.exe" "c:\Dokumente und Einstellungen\Matthias Pospiech\Eigene Dateien\Dev\Qt\QLaserDynamic-MSVC\src\mainwindowimpl.h" -o "c:\Dokumente und Einstellungen\Matthias Pospiech\Eigene Dateien\Dev\Qt\QLaserDynamic-MSVC\src\Param="."/moc_mainwindowimpl.cpp"
Die Buildanweisungen zu der Datei entsprechen allerdings nicht exakt der in qt2005.pdf beschriebenen und wurden vom Plugin hinzugefügt.
(die Datei ist derzeit nicht mehr online, hat das einen Hintergrund?)

qt2005.pdf liefert folgende Anweisung:
$(QTDIR)\bin\moc.exe "$(InputPath)" -o "$(InputDir)moc_$(InputName).cpp"
wohingegen im Buildschritt eingetrage ist
"Param="$(QTDIR)"/bin/moc.exe" "$(InputPath)" -o "$(InputDir)Param="."/moc_$(InputName).cpp"

Wenn ich die Anweiung manuell eingebe, dann funktioniert es auch
C:\Programme\Qt4\bin\moc.exe "c:\Dokumente und Einstellungen\Matthias Pospiech\Eigene Dateien\Dev\Qt\QLaserDynamic-MSVC\src\mainwindowimpl.h" -o c:\Dokumente und Einstellungen\Matthias Pospiech\Eigene Dateien\Dev\Qt\QLaserDynamic-MSVC\src\moc_mainwindowimpl.cpp"

Was ändere ich nun die Buildanweiung so, dass sie immer richtig ist?

Matthias
Zuletzt geändert von pospiech am 27. Februar 2008 22:36, insgesamt 3-mal geändert.
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Christian81 hat geschrieben:Falscher qmake Aufruf

qmake -tp vc
liefert weiterhing
amics>qmake -tp vc QLaserDynamic.pro
WARNING: Unable to generate output for: C:/Dokumente und Einstellungen/Matthias
Pospiech/Eigene Dateien/Dev/Qt/QLaserDynamics//Makefile.Debug [TEMPLATE vcapp]
WARNING: Unable to generate output for: C:/Dokumente und Einstellungen/Matthias
Pospiech/Eigene Dateien/Dev/Qt/QLaserDynamics//Makefile.Release [TEMPLATE vcapp]
Was ändere ich nun die Buildanweiung so, dass sie immer richtig ist?
Habe nun manuell eine buildregel hinzugefügt. Jetzt werden zwar alle .h Dateien ge-moc-ed, aber dafür auch alle die es brauchen.

Dafür bekomme ich trotzdem noch Linker Fehler
1>moc_mainwindowimpl1.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall MainWindowImpl::metaObject(void)const " (?metaObject@MainWindowImpl@@UBEPBUQMetaObject@@XZ) ist bereits in moc_mainwindowimpl.obj definiert.
1>moc_mainwindowimpl1.obj : error LNK2005: "public: virtual void * __thiscall MainWindowImpl::qt_metacast(char const *)" (?qt_metacast@MainWindowImpl@@UAEPAXPBD@Z) ist bereits in moc_mainwindowimpl.obj definiert.
1>moc_mainwindowimpl1.obj : error LNK2005: "public: virtual int __thiscall MainWindowImpl::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MainWindowImpl@@UAEHW4Call@QMetaObject@@HPAPAX@Z) ist bereits in moc_mainwindowimpl.obj definiert.
1>moc_mainwindowimpl1.obj : error LNK2005: "public: static struct QMetaObject const MainWindowImpl::staticMetaObject" (?staticMetaObject@MainWindowImpl@@2UQMetaObject@@B) ist bereits in moc_mainwindowimpl.obj definiert.
und bin mal wieder ratlos warum. (Könnte es sein das nur für debug oder release kompiliert wird und dann das richtige nicht vorhanden ist?)

Matthias
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Die Linkerfehler bekommst Du weil Du die moc_mainwindowimpl.cpp noch nicht zum Projekt hinzugefügt hast (sie wurde zwar durch den Custom Build Step erstellt aber noch nicht zum Projekt hinzugefügt (sollte ein zukunftiges Plugin sicher automatisch machen). Der Fehler beim Custom Build Step der vom PlugIn erzeugt wird, liegt in dem Param="."
Der Pfad wird eigentlich über die Angaben in der AddQtClass.vsz Datei eingestellt. Entweder Du hast dort was verändert, oder es ist ein Bug im PlugIn Code. Könnte evtl. ein Seiteneffekt mit den Leerzeichen im Pfad sein.

Das Dokument ist momentan aus anderen Gründen offline,... wir bekommen einene neuen Server. :-)
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Volker hat geschrieben:Die Linkerfehler bekommst Du weil Du die moc_mainwindowimpl.cpp noch nicht zum Projekt hinzugefügt hast (sie wurde zwar durch den Custom Build Step erstellt aber noch nicht zum Projekt hinzugefügt.
Ich habe sie schon hinzugefügt. Ob sie im Projekt sind oder nicht ändert aber am gezeigten Fehler nichts.

Interessanterweise löst sich das Problem aber auf, wenn ich 'moc_mainwindowimpl.cpp' nicht hinzufüge, aber die MOC Datei des Dialoges.

Matthias
Antworten