2017-09-08 2 views
0

Ich habe eine Ubuntu-Build-Maschine.Wie richte ich eine Build-Umgebung für Mingw und QT unter Linux ein?

Ich möchte für Windows kompilieren mit MinGW, die ich installiert habe.

Ich kompiliere QT-Apps (QT5 wie es passiert).

Ich benutze CMake.

Native Builds funktionieren einwandfrei, aber Cross Compiling schlägt schrecklich fehl, da CMake die von FindPackage verwendeten Dateien nicht finden kann. Um dies zu lösen, habe ich alle QT-Bibliotheksdateien, Header-Dateien, cmake-Dateien und Dateien unter shared/qt5 von einer MSYS2 MinGW/QT5-Installation (die wunderbar funktioniert) in den entsprechenden MinGW-Ordner auf meiner Ubuntu-Build-Maschine kopiert. Ich habe auch symbolisch die nativen Binärdateien für "qmake", "rcc", "moc" und "uic" an den richtigen Ort verlinkt, da die QT5 cmake-Dateien nach ihnen zu suchen schienen. Ich nehme an, ich hätte die cmake-Dateien bearbeiten sollen, um nach den Binärdateien mit dem Zielsystempräfix zu suchen, und die symbolischen Verknüpfungen umbenannt, aber ich war faul.

CMake gelingt es jetzt, aber wenn ich dann versuchen, „zu machen“ mein Programm ich folgende Fehlermeldung von „moc“ erhalten:

moc: could not find a Qt installation of '' 

Ich denke, dass ich eine Umgebungsvariable oder zwei bin fehlt.

Idealerweise möchte ich eine Lösung, die einige vorgefertigte Ubuntu-Pakete spezifiziert, die ich installieren kann, um QT-Anwendungen für Windows unter Linux mit MinGW zu kompilieren, aber ehrlich gesagt, alles, was funktioniert, wäre großartig.

+0

Haben Sie sich [mxe] (http://mxe.cc) angesehen? Es sollte alle Ihre Anwendungsfälle abdecken. – MateoConLechuga

+0

MinGW, eine Kontraktion von "Minimalist GNU für Windows", ist eine minimalistische Entwicklungsumgebung für native Microsoft Windows-Anwendungen. Sie brauchen MinGW nicht unter Linux, weil Sie normale gewöhnliche GNU haben. – AlexanderVX

+0

@AlexanderVX: Sie benötigen es, wenn Sie für Windows unter Linux erstellen möchten. In der Tat kann ich mir keine andere Möglichkeit vorstellen, für Windows unter Linux zu bauen. Bitte sagen Sie, ob Sie an eine denken können. – AlastairG

Antwort

0

Die Antwort stellt sich heraus, dass ich wirklich meine eigene angepasste Version von Qt kompilieren muss.

Der Fehler, den ich bekam, war, weil es sich herausstellte, dass die qmake-Binärdatei keine Binärdatei war, sondern eine symbolische Verbindung zu etwas anderem. Die Korrektur, die mir erlaubt, erfolgreich zu kompilieren, aber alle Abhängigkeiten sind falsch und die resultierende binäre ist nicht ausführbar. Um dies zu lösen, muss ich Qt und all seine Abhängigkeiten selbst kompilieren :(Da diese Harfuzz mit seinen zirkulären Abhängigkeiten enthält, ist das nicht nett. Mein letzter Versuch, solche Binaries zu kompilieren und zu verwenden, führte zu einer ausführbaren Datei, die einfach abgestürzt ist wirklich wollen wirklich, dass wer auch immer die MinGW Pakete für Ubuntu wie libicu, Qt, etc. etc. mit MinGW beliebten Pakete zusammenstellen würde und sie als Pakete liefern

Nützliche Links:.

https://marc.wäckerlin.ch/computer/cross-compile-on-ubuntu-linux-for-windows-using-mingw

https://github.com/mwaeckerlin/mingw

Verwandte Themen