Statisch linken mit QT
-
Hi,
ich schreib nun seit einiger Zeit ein paar kleine Tools mit QT unter Windows und ärgere mich immer darüber, dass ich die DLLs (mingw, qt) beilegen muss. Nun hab ich etwas nachgeforscht um meine Tools statisch zu linken. Aber ich habe nur eine Variante gefunden, bei der man zunächst QT selbst statisch linken muss, bevor man das mit der eigenen Anwendung machen kann.
Gibt's da keinen anderen weg?
Ich habs natürlich pauschal erstmal mit CONFIG += static in der Projektdatei versucht - ohne Erfolg.
-
Du musst natürlich die Qt-Lib zuerst als statische Lib komplieren und dann dein Programm. Das geht meines wissens nicht anders und Anleitung sollte googlebar sein.
Bedenke aber folgende Einschränkung: Du musst deinen eigenen Code offenlegen (GPL), außer du hast eine kommerzielle Qt-Lizenz.
-
Wenn das nur für die QT lib gilt, dürfte er ja nicht wegen der mingw DLL meckern, oder? Also zumindest, wenn ich richtig linke, was wohl nicht der Fall ist...
-
Hier ein Tip wie man nur eine Exe verteilen braucht, ohne Installer:
- packe die Exe+Qt-DLLs mit 7zip
- besorge dir 7zS.sfx (siehe "SFX for installers" auf 7zip.org unter Downloads)
- erstelle eine config.txt mit Inhalt (start.exe durch deine .exe austauschen)
;!@Install@!UTF-8! RunProgram="start.exe" ;!@InstallEnd@!
- das Archiv .7z, 7zS.sfx und config.txt in ein Verzeichnis und dann folgenden Befehl ausführen:
copy /b 7zS.sfx + config.txt + archiv.7z meineapp.exe
Und schon hast du eine einzelne Exe die sich beim Aufruf automatisch in ein temporäres Verzeichnis entpackt (richtige Exe und Qt-DLLs) und startet.
Das Icon der sfx kann man auch austauschen z.b. mit "Resource Hacker".