Statische Linken

Verschiedenes zu Qt
Antworten
Thorsten
Beiträge: 55
Registriert: 29. Dezember 2004 22:47
Wohnort: Aachen

Statische Linken

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Thorsten
Beiträge: 55
Registriert: 29. Dezember 2004 22:47
Wohnort: Aachen

Beitrag 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ß
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Thorsten
Beiträge: 55
Registriert: 29. Dezember 2004 22:47
Wohnort: Aachen

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QMAKESPEC wird noch verwendet, aber QTDIR nicht mehr.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Thorsten
Beiträge: 55
Registriert: 29. Dezember 2004 22:47
Wohnort: Aachen

Beitrag 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
Antworten