Seite 1 von 1

Verständnisfrage zu "configure -blub -bla"

Verfasst: 24. Juni 2010 23:13
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

Verfasst: 24. Juni 2010 23:20
von Christian81
Was ist das für ein Plugin? Wie oft fügst Du denn ein neues Plugin hinzu??

Verfasst: 25. Juni 2010 00:09
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 :(

Verfasst: 25. Juni 2010 09:08
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?

Verfasst: 25. Juni 2010 09:32
von exaveal
Ich kompiliere statisch?
Hatte ich nicht vor, woher siehst du das? Was mache ich dann falsch?
Bzw geht es schneller?

Verfasst: 25. Juni 2010 12:07
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.

Verfasst: 25. Juni 2010 13:26
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 :(

Verfasst: 25. Juni 2010 14:21
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…

Verfasst: 26. Juni 2010 04:34
von marvel

Verfasst: 26. Juni 2010 16:42
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 ...

Verfasst: 26. Juni 2010 18:44
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: