Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Verschiedenes zu Qt
Antworten
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Beitrag von Eltharion »

Hallo. Ich habe mir das neue Qt 5.3.0 eben mit MinGW übersetzt, aber das Nutzen der Libs klappt noch nicht. Vielleicht kann mir dabei jemand helfen. Ich verwende folgende Konfiguration:

Code: Alles auswählen

configure \
  -prefix ${OEG_BASE_DIR} \
  -bindir ${OEG_BASE_BIN_DIR} \
  -libdir ${OEG_BASE_LIB_DIR} \
  -plugindir ${OEG_BASE_DIR}/plugins/qt \
  -translationdir ${OEG_BASE_DIR}/translations \
  -datadir ${OEG_BASE_DIR}/share/qt5 \
  -archdatadir ${OEG_BASE_DIR}/share/qt5 \
  -examplesdir ${OEG_BASE_DIR}/share/qt5/examples \
  -testsdir ${OEG_BASE_DIR}/share/qt5/tests \
  -I ${OEG_BASE_DIR}/include \
  -I ${OEG_BASE_DIR}/include/freetype2 \
  -L ${OEG_BASE_LIB_DIR} \
  -no-mtdev \
  -confirm-license \
  -opensource \
  -release \
  -shared \
  -plugin-sql-sqlite \
  -no-cups \
  -no-nis \
  -fontconfig \
  -qt-pcre \
  -system-freetype \
  -system-harfbuzz \
  -system-libpng \
  -system-libjpeg \
  -system-zlib \
  -system-proxies \
  -no-rpath \
  -gui \
  -widgets \
  -feature-webkit \
  -iconv \
  -icu \
  -pch \
  -accessibility \
  -platform win32-g++ \
  -device-option QMAKE_EXTENSION_IMPORTLIB="dll.a" \
  -strip \
  -no-openvg \
  -nomake tests \
  -optimized-qmake \
  -opengl desktop \
  -no-pkg-config \
  -no-openssl \
  -no-gtkstyle \
  -no-glib \
  -dbus \
  -verbose \
  -ldbus-1 -lfreetype
Zusammen mit den Patches von:

https://github.com/Alexpux/MINGW-packag ... gw-w64-qt5

1. Als erstes fällt auf, dass ich -ldbus-1 und -lfreetype benötigte, damit das Linken klappt. Ich bin offenbar der Einzige, der das extra noch angeben muss, suche ich mit Google, finde ich nur Beispiele, wo das automatisch klappt. Weiss jemand warum?

2. Ein einfaches qmake in einem Beispielverzeichnis funktioniert nicht. Erst vermisst er die QMAKESPEC variable (die zudem einen vollen Pfad enthalten muss) und dann meint qmake nur "Project ERROR: Unknown module(s) in QT: widgets gui core" und steigt aus. Wohlgemerkt: Die examples-Binaries werden beim Kompilieren von Qt problemlos mitgebaut, nur später geht qmake irgendwie nicht mehr. Auch hier wäre ich für jeden Hinweis zur Fehlersuche dankbar.

E*
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Beitrag von Christian81 »

Nicht aus Versehen noch irgendwo ein qmake von Qt4 rumliegen welches Du benutzt?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

Re: Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Beitrag von Eltharion »

Danke. Gute Idee, aber das habe ich ganz sicher nicht. Es könnte etwas damit zu tun haben (sagt Google), dass ich mit -prefix ein Verzeichnis angebe, in welches installiert wird. Vielleicht müssen dann irgendwelche qmake-Skripte angepasst werden o.ä.? Ich werde heute Abend mal eine vorkompilierte MinGW-Version runterladen und schauen, was da anders ist...

E*
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Beitrag von Christian81 »

-prefix wird unter windows nicht wirklich unterstützt - zumindest nicht in Qt4. Dort müsstest Du noch eine qt.conf erzeugen mit den korrekten Pfaden zu den einzelnen Verzeichnissen. Als Beispiel siehe https://github.com/matlinuxer2/kde-wind ... qt/qt.conf und die Doku hilft auch etwas: http://qt-project.org/doc/qt-4.8/qmake- ... rence.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

Re: Eigenbau Qt 5.3.0 MinGW funktioniert nur eingeschränkt

Beitrag von Eltharion »

Ja, um die qt.conf komme ich sowieso nicht herum, da meine Plugins in plugins/qt liegen und der qtbinpatcher den Pfad immer nur auf plugins setzt. Und mit qt.conf läuft dann auch alles prima, nur eben qmake erzeugt keine korrekten Makefiles. Mit qmake -d kann man sich ja ausgeben lassen, an welcher Stelle der Fehler auftritt (share/qt5/mkspecs/features/qt_functions.prf:173). wenn ich darüber den isEmpty() Test auskommentiere (next() aufrufe), dann erzeugt er auch Makefiles, aber darin müssen für jedes übersprungene Modul der INCPATH, LFLAGS and LIBS per Hand ergänzt werden. Bleibt also nur noch die Frage, warum der Test fehlschlägt. So ohne Hintergrundwissen sind mir die $$replace(), $$resolve_depends(), $$eval() Aufrufe am Anfang von defineTest(qtAddModules) ein Rätsel. Der scheint die Abhängigkeiten zu suchen, aber was da fehl schlägt weiss ich nicht.

Der Vergleich der Skripte mit einer vorkompilierten Qt-Version half nichts, da die eigentlich identisch sind. Bis auf die Änderungen durch die Patches, aber auch das testweise einkopieren der anderen Skripte änderte am Ergebnis nichts.

Die Idee, dass er in den libexec-Pfad (den ich bisher ignoriert hatte und der eigentlich auf "bin" zeigen sollte) schaut und die DLLs sucht, half mir auch nicht weiter.

Der einzige Unterschied ist jetzt nur noch, dass ich eine MSYS-Shell benutze und die fertigen Binaries DOS nehmen. Irgendwo in den prf-Dateien gab es Abweichungen, je nach dem, welche Umgebung gefunden wurde.

Ansonsten habe ich noch mit dem Process Explorer die besuchten Dateien kontrolliert, aber es gibt keine fehlgeschlagenen Zugriffe oder Zugriffe, die nicht erklärbar wären...

E*
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

(solved) Re: Eigenbau Qt 5.3.0 MinGW funktioniert nur einges

Beitrag von Eltharion »

Hallo.

Das Problem lag daran, dass das frisch installierte Qt ein Verzeichnis qt-prefix-dir/share/qt5/mkspecs hatte, aber mkspecs direkt im qt-prefix-dir liegen muss. In den vorkompilierten Versionen liegt es sogar auch da. Ich habe das Unterverzeichnis verschoben und nun geht auch alles tadellos. Auch die QMAKESPEC variable kommt nun ohne Pfad aus. Der qtbinpatcher hatte das qt-datadir falsch gesetzt (auf das qt-prefix-dir) und es sah so "okay" aus, dass ich es gar nicht bemerkt hatte.

Danke für die Hilfe + Viele Grüße,

E*
Antworten