Verständnisfrage zu "configure -blub -bla"

Verschiedenes zu Qt
Antworten
exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Verständnisfrage zu "configure -blub -bla"

Beitrag von exaveal »

Wunderschönen guten Abend.


Ich habe da eine kleine Verständnisfrage zu QT und Windows.

Ich habe ein neues Plugin für QT hinzugefügt und muss laut Wikis und Forenbeiträgen im Netz danach immer ...
1. QT Cmd öffnen
2. "configure -x -y -z" eingeben
3. warten, Ewigkeiten! (ca. 5-10 min.)
4. mingw32-make


Das heißt doch, dass ich QT jedesmal neu kompiliere, wenn ich auch nur ein Plugin einbinden will.
Geht das wirklich nicht anders unter Windows?

Unter Linux war das eine Sache von 2 Minuten:
Paketverwaltung Plugin installiert und fertig.
Kanns das wirklich sein?!


Entweder habe ich hier ein Verständnisproblem und mach mir durch lesen un simples befolgen der Anweisungen irre viel überflüssige Arbeit, oder das Konzept unter Windows ist echt so irre.
Bitte um Erleuchtung :D
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was ist das für ein Plugin? Wie oft fügst Du denn ein neues Plugin hinzu??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Beitrag von exaveal »

MySQL Plugin.

Nicht oft.
Ich entwickel aber auf 3 unterschiedlichen PCs (einer davon ist ein langsamer Laptop). Ich habe somit auf allen drei Rechner Windows installiert. Und nun kompiliere ich grad nach den Anleitungen wie ich das MySQL Plugin in QT einbinde auf allen drei Rechnern QT. Das zieht sich auf dem Laptop schon mindestens drei? Stunden.
:roll:

Aber okay. Es geht mir mehr ums Verständnis. Ist das echt so "lächerlich" aufwendig für den "Nutzen" unter Windows? Oder mach ich etwas total falsch, bzw würde das auch einfacher gehen?

Ich dachte (wie unter Linux), dass das Kopieren der MySQL Library (bzw dll unter Windos) in den qt/plugins/sqldrivers reicht. Aber nein, QT frisst das Plugin nicht. Und nach den Anleitungen im Netz muss ich jetzt erstmal das ganze neu kompilieren :?




¤: haha genial. Ich bin gestern pennen gegangen, nach 5 Stunden Kompilieren. Heute früh seh ich dann nur auf den Kisten: Fehler :evil:


Code: Alles auswählen

Creating library file: c:\Qt\2010.04\qt\lib\libQtWebKitd4.a
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x5a): undefi
ned reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x12c): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x1f1): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x293): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x335): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x820): undef
ined reference to `vtable for WebCore::QNetworkReplyHandler'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0xa9e): undef
ined reference to `vtable for WebCore::QNetworkReplyHandler'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0xd22): undef
ined reference to `WebCore::QNetworkReplyHandler::processQueuedItems()'
./obj\debug\FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x314b): undefi
ned reference to `QWebPage::unsupportedContent(QNetworkReply*)'
./obj\debug\FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x425e): undefi
ned reference to `QWebPage::downloadRequested(QNetworkRequest const&)'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\..\lib\QtWebKitd4.dll] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/2010.04/qt/src/3rdparty/webkit/WebCore
'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/2010.04/qt/src/3rdparty/webkit/WebCore
'
mingw32-make: *** [sub-webkit-make_default-ordered] Error 2

C:\Qt\2010.04\qt>

Gibt es ein paar Tricks das Kompilieren zu beschleunigen? Habe 2 Proessoren, von denen beim kompilieren nur einer benutzt wird. Hab ein -j2 gelesen, werde es mal ausprobieren.
Genauso kann man bestimmt auch einiges weglassen, leider weiß ich nicht sicher WAS. Und ein >5 Stunden Kompilieren um danach festzustellen, dass ich etwas wichtiges weggelassen habe ist leider kein try&learn :(
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nein, gcc ist generell sehr langsam. Unter Linux bekommst Du das zeug nur schon vorkompiliert was Du unter Windows nicht hast.
Warum kompilierst du statisch?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Beitrag von exaveal »

Ich kompiliere statisch?
Hatte ich nicht vor, woher siehst du das? Was mache ich dann falsch?
Bzw geht es schneller?
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag von MichaelS »

Christian81 hat geschrieben:Nein, gcc ist generell sehr langsam.
Zwischen dem Compilierzeiten des gcc unter Linux und min-gw unter windows liegen Welten.
exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Beitrag von exaveal »

Okay alles klar, aber was ist mit dem statischen Kompilieren?

Kompiliere ich etwa statisch? Mal abgesehen davon dass ich nicht wirklich begreife was das heißt (im Falle von QT). Aber das ist mir erstmal auch egal.


Wieso gibt es keine FAQ zum Einfügen eines Plugins (oder speziell des MySQL Plugins) das auch funktioniert :( Überall steht es ein bisschen anders, aber keines Läuft.
Ich bin echt am verzweifeln :(
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Beitrag von ireas »

exaveal hat geschrieben:Kompiliere ich etwa statisch?
Ja; a ist die Endung für statische Bibliotheken.
Mal abgesehen davon dass ich nicht wirklich begreife was das heißt (im Falle von QT). Aber das ist mir erstmal auch egal.
Vereinfacht gesagt bedeutet statisch, dass alle Abhängigkeiten in die ausführbare Datei geschmissen werden, weshalb diese relativ groß werden kann. Wenn du dynamisch kompilierst, wird die ausführbare Datei kleiner, dafür müssen die entsprechenden dynamischen Bibliotheken zur Laufzeit bereitstellen (unter Windows ddls, unter Unix sos).
Wieso gibt es keine FAQ zum Einfügen eines Plugins (oder speziell des MySQL Plugins) das auch funktioniert :( Überall steht es ein bisschen anders, aber keines Läuft.
Ich bin echt am verzweifeln :(
Da kann ich dir leider nicht weiterhelfen; wenn ich mich recht entsinne, musste ich meinen SQL-Treiber unter Windows nicht nachinstallieren, sondern er war schon installiert…
marvel
Beiträge: 105
Registriert: 9. August 2009 07:41

Beitrag von marvel »

exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Beitrag von exaveal »

okay, aber ich will eigentlich nichts statisch kompilieren.

gehe exakt nachdieser anleitung vor: http://christopher.rasch-olsen.no/2009/ ... indows-xp/

leider kommt beim kompilieren diese fehlermeldung:

Code: Alles auswählen

api\qscriptextensionplugin.h:43: Error: Undefined interface
mingw32-make[2]: *** [tmp/moc/debug_shared/moc_qscriptextensionplugin.cpp] Error
 1
mingw32-make[2]: Leaving directory `C:/Qt/2010.04/qt/src/script'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/2010.04/qt/src/script'
mingw32-make: *** [sub-script-sub_src_target_ordered] Error 2

C:\Qt\2010.04\qt>

habe jetzt mal folgenden configure-cmd benutzt:
configure -qt-sql-mysql -qt-sql-odbc -nomake examples -nomake demos -no-exceptions -no-qt3support -no-openssl -no-webkit -no-phonon -no-sql-sqlite

mal schaun was raus kommt


:?


¤:
sooo, also hat jetzt mehrere fehler schon gebracht, aber hab dann einfach .h .lib .a .def und alles möglich für dateien überall rumkopiert, damit er sie auch immer schön findet.

dann hat er nochmal abgebrochen, weil in der mysql.h datei stand

Code: Alles auswählen

* parent=0
das hat der Kompiler nciht gefressen, also in

Code: Alles auswählen

*parent = 0
umgeschrieben.

jetzt kompiliert er weiter. aber schon sehr strange mit der mysql.h :shock:

mal schaun was als nächstes kommt :?

¤2: okay nächster fehler:

Code: Alles auswählen

qscriptextensionplugin.h:43: Error: Undefined interface
Lösung aber gefunden:
Es sind überflüssige temporäre Dateien im Qt-release enthalten. Es müssen zwei Dateien mit dem Namen mocinclude.tmp in den Ordnern X:\Qt\20xx.xx\qt\src\script\tmp\moc\debug_shared und .\release_shared gelöscht werden.


so, weiter gehts. mein gott ist das ...
exaveal
Beiträge: 14
Registriert: 18. Dezember 2009 16:05

Beitrag von exaveal »

Das Kompilieren hat jetzt geklappt, super.

Dafür kann ich mit dem neu kompilierten QT mein eigenes Programm nicht mehr kompilieren:
moc: Invalid argument
Usage: moc [options] <header-file>
-o<file> write output to file rather than stdout
-I<dir> add dir to the include path for header files
-E preprocess only; do not generate meta object code
-D<macro>[=<def>] define macro, with optional definition
-U<macro> undefine macro
-i do not generate an #include statement
-p<path> path prefix for included file
-f[<file>] force #include, optional file name
-nw do not display warnings
@<file> read additional options from file
-v display version of moc
mingw32-make[1]: *** [debug/moc_mct.cpp] Error 1
mingw32-make: *** [debug] Error 2
The Prozess "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" wurde mit dem Rückgabewert %2 beendet.
Fehler beim Erstellen des Projekts mct (Ziel: Desktop)
Beim Ausführen des Build-Schritts 'Make'
Hm, kann mir da vllt jemand weiter helfen? :cry:
Antworten