Projektfile - Targetabhängig Module Laden

Verschiedenes zu Qt
Antworten
helmuth
Beiträge: 15
Registriert: 11. Dezember 2010 01:26

Projektfile - Targetabhängig Module Laden

Beitrag von helmuth »

Hallo Forum,

Ich versuche aktuell ein kleines Programm zu erstellen das sowohl auf Windows laufen soll, als auch auf Maemo (ein Linux System).

Für das Linux System brauch ich an 2 Stellen zugriff auf DBus. (was es ja unter Windows nicht gibt)

Damit mein Programm problemlos unter Windows ohne diese Codezeilen läuft blende ich diese unter den übrigen Targets hiermit aus:

Code: Alles auswählen

#ifdef Q_WS_MAEMO_5
// Code
#endif
Das Funktioniert bestens. Bedauerlicherweise benötige ich in der *.pro Datei eine Angabe zum dbus Modul.

Code: Alles auswählen

QT += dbus
Bedauerlicherweise gibts hier wohl kein #ifdef - liege ich da richtig? Jedenfalls werden kommentare draus.

Ist diese dbus Zeile vorhanden lässt sich mein Programm fürs Windows system nicht mehr compilieren. Entferne ich sie meckert er beim Maemo Target.

Weiss jemand rat? Die Qt4 Dokumentation scheint darauf nicht wirklich einzugehen. Und Google spuckte mir bisher nur abfragen in richtung "debug/release" aus...
CONFIG(debug, debug|release) {}
Da werd ich leider nicht wirklich schlau draus. CONFIG(maemo) bzw. CONFIG(Q_WS_MAEMO_5) funktionieren jedenfalls nicht.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Da gibt's vermutlich mehrere Varianten..

eine Variante könnte so in diese Richtung sein:

Code: Alles auswählen

--------------------- im pro-file -------------------
unix {
  CONFIG += with_dbus
}

with_dbus {
  DEFINES += WITH_DBUS
  QT         += dbus
}
----------------------------------------------------

-------------------------im code------------------
#ifdef WITH_DBUS
   ...
#endif
----------------------------------------------------
hth..
helmuth
Beiträge: 15
Registriert: 11. Dezember 2010 01:26

Beitrag von helmuth »

Danke Dir. Hast mir insofern weitergeholfen das ich endlich (über umwege) auf das richtige Suchwort gekommen bin. (DEFINES und dann später macro) hat mir sehr weitergeholfen. ;-)

Das Q_WS_MAEMO_5 das ich im Code verwendet habe entspricht im project file diesem hier:

Code: Alles auswählen

maemo5 {     
QT += dbus
} 
Da muss man erstmal drauf kommen...

Bedauerlicherweise hab ich auf meinen streifzügen keine Auflistung aller möglicher Macros im Project File oder eine detailierte Erklärung gefunden die diesen Aspekt abdeckt. Obige Info hab ich auf dieser Seite ergoogelt: http://developer.qt.nokia.com/forums/viewthread/197
Antworten