Seite 1 von 1

Statische Linken

Verfasst: 23. September 2007 13:39
von Thorsten
Hallo zusammen,

ich programmiere zwar schon schon etwas länger mit Qt, stehe aber jetzt vor einem Problem, welches ich nicht lösen kann. Ich möchte in meinem pro-File einstellen können, ob statisch oder dynamisch gelinkt werden soll. Wie kann ich das so einstellen, dass die Debug-Version dynamisch, also gegen eine dll, und die Release-Version statisch gelinkt wird?

Die Bibliotheken habe ich alle erstellt, so dass ich im bin- bzw. lib-Verzeichnis von jeder Bibliothek folgende Versionen habe:

QtGui4.dll
QtGuid4.dll
libQtGui4.a
libQtGui.a
libQtGuid4.a

(Die statische Debug habe ich nicht erstellt, da ich sie nicht brauche.)

Gruß
Thorsten

Verfasst: 23. September 2007 14:49
von Christian81
Im pro-File einstellbar ist das imho nicht. Einfach 2 qt-Installationen machen - einmal mit static und einmal shared und je nachdem das geeignete benutzen (einfach das entsprechende qmake-Executable aufrufen)

Verfasst: 23. September 2007 18:47
von Thorsten
Aber ich brauche doch nicht alles zweimal, die Bibliotheken habe ich ja und die Header-Dateien bleiben davon doch unberührt. Auch kann ich QTDIR nicht ständig umbiegen. Wo genau merkt sich Qt denn genau, ob es statisch oder dynamisch linken soll? Ist das wirklich in qmake.exe fest verdrahtet? Kann ich mir irgentwie nicht wirklich vorstellen. Wenn ja, brauche ich doch auch nur zwei qmake.exe, oder?

Eigentlich will ich mit einem Makefile 4 Versionen bauen, je debug/release und dyn/static.

Werde deine Idee erstmal ausprobieren. Hoffe aber noch auf bessere Lösungen.

Danke.

Gruß

Verfasst: 23. September 2007 18:51
von Christian81
QTDIR gibt es in Qt4 gar nicht mehr. Die Info ob statisch oder dynamisch steht in mkspecs/qconfig.pri.
Sehe kein Problem immer die korrekte qmake.exe aufzurufen...

Verfasst: 23. September 2007 19:42
von Thorsten
Wird denn QMAKESPEC in Qt4 verwendet. Oder sind das beides Altlasten meiner Qt3-Zeit?

In der qconfig.pri steht das, aber es reicht nicht einfach es dort zu ändern.

Ich kompiliere jetzt nochmal alles (ohne tools, demo und example) neu.

Verfasst: 23. September 2007 19:48
von Christian81
QMAKESPEC wird noch verwendet, aber QTDIR nicht mehr.

Verfasst: 23. September 2007 21:17
von Thorsten
Ja es funktioniert, doch ist die Konfiguration nicht so prickelnd. Die Pfade sind tatsächlich in qmake.exe fest eingebaut. Auch wo dann moc, uic, usw. sind. So dass ich jetzt vieles doppelt habe. Ich freue mich schon auf 4.3.2. Da werde ich dann alles neu zusammen stricken mussen :(

Vielleicht lässt sich Trolltech da mal was eleganteres einfallen, so dann man im pro-File einfach CONFIG += static oder CONFIG += shared, schreiben kann. Analog zu release und debug. Ganz klasse wäre eine Option wie
static_and_shared. Die Ausgabeverzeichnisse könnte man ja mit einer Fallunterscheidung einstellen.

Vielen Dank für deine Hilfe.

Lieben Gruß
Thorsten