Das FreeBSD Porter-Handbuch
Zurück | Kapitel 6. Besonderheiten | Weiter

# 6.18. wxWidgets verwenden

Dieser Abschnitt beschreibt den Status der wxWidgets-Bibliotheken in den Ports und deren Einbindung in das Ports-System.

## 6.18.1. Einführung

Es gibt viele Probleme bei der gleichzeitigen Verwendung unterschiedlicher Versionen von wxWidgets-Bibliotheken (Dateien unterschiedlicher wxWidgets-Versionen haben denselben Dateinamen). In den Ports wurde das Problem dadurch gelöst, dass jede Version unter einem eigenen Namen installiert wird, der die Versionsnummer als Suffix beinhaltet.

Der offensichtliche Nachteil dabei ist, dass jede Anwendung so verändert werden muss, dass sie die erwartete Version vorfindet. Die meisten solcher Anwendungen benutzen das `wx-config`-Skript, um die benötigten Compiler- und Linkerflags zu erhalten. Dieses Skript hat für jede verfügbare Version einen anderen Namen. Die meisten Anwendungen beachten eine Umgebungsvariable oder ein Argument beim `configure`-Skript, um das gewünschte `wx-config`-Skript festzulegen. Ansonsten müssen sie gepatcht werden.

## 6.18.2. Auswahl der Version

Um festzulegen, welche Version der wxWidgets verwendet werden soll, gibt es zwei Variablen (falls nur eine der beiden definiert wird, so wird die andere auf einen Standardwert gesetzt):

Tabelle 6-24. Variablen, um die wxWidgets-Version festzulegen

Variable | Beschreibung | Standardwert
--- | --- | ---
`USE_WX` | Liste der Versionen, die der Port verwenden kann | Alle verfügbaren Versionen
`USE_WX_NOT` | Liste der Versionen, die der Port nicht verwenden kann | Nichts

Es folgt eine Liste an möglichen wxWidgets-Versionen und deren zugehöriger Port:

Tabelle 6-25. Verfügbare wxWidgets-Versionen

Version | Port
--- | ---
`2.4` | `x11-toolkits/wxgtk24`
`2.6` | `x11-toolkits/wxgtk26`
`2.8` | `x11-toolkits/wxgtk28`

> Anmerkung: Ab Version `2.5` werden auch Versionen in Unicode unterstützt und über einen Unterport mit dem Suffix `-unicode` installiert. Dies kann aber auch über Variablen gehandhabt werden (siehe Abschnitt 6.18.4).

Die Variablen in Tabelle 6-24 können auf einen oder mehrere (durch Leerzeichen getrennt) der folgenden Werte gesetzt werden:

Tabelle 6-26. Spezifikationen der wxWidgets-Versionen

Beschreibung | Beispiel
--- | ---
Einzelne Version | `2.4`
Aufsteigende Versionsnummern | `2.4+`
Absteigende Versionsnummern | `2.6-`
Versionsinterval (muss aufsteigend sein) | `2.4-2.6`

Desweiteren gibt es Variablen, über die eine bevorzugte Version festgelegt werden kann. Die Versionen können als Liste angegeben werden, wobei die Reihenfolge der Priorisierung entspricht.

Tabelle 6-27. Variablen zur Festlegung der bevorzugten wxWidgets-Version

Name | Bestimmt für
--- | ---
`WANT_WX_VER` | den Port
`WITH_WX_VER` | den Benutzer

## 6.18.3. Komponentenauswahl

Desweiteren gibt es Anwendungen, die nicht direkt wxWidgets-Bibliotheken sind, aber trotzdem mit diesen zusammenhängen. Diese Anwendungen können über die Variable `WX_COMPS` festgelegt werden. Die folgenden Komponenten sind verfügbar:

Tabelle 6-28. Verfügbare wxWidgets-Komponenten

Name | Beschreibung | Versionsbeschränkungen
--- | --- | ---
`wx` | Hauptbibliothek | `Nichts`
`contrib` | Beigesteuerte Bibliothek | `Nichts`
`python` | wxPython (Python-Bindungen) | `2.4-2.6`
`mozilla` | wxMozilla | `2.4`
`svg` | wxSVG | `2.6`

Der Typ der Abhängigkeit kann für jede Komponente durch hinzufügen eines Suffix (durch Strichpunkt getrennt) festgelegt werden. Falls der Typ nicht angegeben wird, wird ein Standardwert verwendet (siehe Tabelle 6-30). Die folgenden Typen sind verfügbar:

Tabelle 6-29. Verfügbare Typen von wxWidgets-Abhängigkeiten

Name | Beschreibung
--- | ---
`build` | Komponente wird zum Bau benötigt – äquivalent zu `BUILD_DEPENDS`
`run` | Komponente wird zum Ausführen benötigt – äquivalent zu `RUN_DEPENDS`
`lib` | Komponente wird zum Bau und Ausführen benötigt – äquivalent zu `LIB_DEPENDS`

Die Standardwerte für die einzelnen Komponenten sind in der folgenden Tabelle aufgeführt:

Tabelle 6-30. Standardtypen der wxWidgets-Abhängigkeiten

Komponente | Typ der Abhängigkeit
--- | ---
`wx` | `lib`
`contrib` | `lib`
`python` | `run`
`mozilla` | `lib`
`svg` | `lib`

Beispiel 6-6. Auswahl von wxWidgets-Komponenten

Der folgende Ausschnitt entspricht einem Port, der die wxWidgets-Version `2.4` und die zugehörigen Bibliotheken verwendet.

    USE_WX=       2.4
    WX_COMPS=     wx contrib

## 6.18.4. Unicode

Die wxWidgets-Bibliotheken unterstützen Unicode seit der Version `2.5`. In den Ports sind beide Versionen verfügbar und können über die folgenden Variablen ausgewählt werden:

Tabelle 6-31. Variablen, um Unicode in den wxWidgets-Versionen auszuwählen

Variable | Beschreibung | Bestimmt für
--- | --- | ---
`WX_UNICODE` | Der Port funktioniert ausschließlich mit der Unicode-Version | den Port
`WANT_UNICODE` | Der Port funktioniert in beiden Versionen – bevorzugt wird jedoch Unicode | den Port
`WITH_UNICODE` | Der Port verwendet die Unicode-Version | den Benutzer
`WITHOUT_UNICODE` | Der Port verwendet, falls unterstützt, die normale Version (falls `WX_UNICODE` nicht definiert ist) | den Benutzer

> Warnung: Die Variable `WX_UNICODE` darf nicht bei Ports benutzt werden, die sowohl die Version mit als auch ohne Unterstützung für Unicode verwenden können. Falls der Port standardmäßig Unterstützung für Unicode bieten soll, verwenden Sie `WANT_UNICODE` stattdessen.

## 6.18.5. Feststellen der installierten Version

Um eine bereits installierte Version zu finden, muss `WANT_WX` definiert werden. Falls diese Variable nicht auf eine bestimmte Versionsnummer gesetzt wird, werden die Komponenten einen Suffix mit der Versionsnummer tragen. Die Variable `HAVE_WX` wird gesetzt, falls eine installierte Version vorgefunden wurde.

Beispiel 6-7. Installierte wxWidgets-Versionen und –Komponenten feststellen

Der folgende Ausschnitt kann in einem Port verwendet werden, der wxWidgets verwendet, falls es installiert ist, oder falls eine Option dafür ausgewählt wurde.

    WANT_WX=        yes

    .include <bsd.port.pre.mk>

    .if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != ""
    USE_WX=         2.4
    CONFIGURE_ARGS+=--enable-wx
    .endif

Der folgende Ausschnitt kann verwendet werden, um die Unterstützung für wxPython zusätzlich zu der von wxWidgets zu aktivieren (beide in Version `2.6`), wenn das installiert ist, oder die Option ausgewählt wurde.

    USE_WX=         2.6
    WX_COMPS=       wx
    WANT_WX=        2.6

    .include <bsd.port.pre.mk>

    .if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != ""
    WX_COMPS+=      python
    CONFIGURE_ARGS+=--enable-wxpython
    .endif

## 6.18.6. Vordefinierte Variablen

Die folgenden Variablen sind in den Ports verfügbar (nachdem sie entsprechend Tabelle 6-24 definiert wurden).

Tabelle 6-32. Vordefinierte Variablen für Ports, die wxWidgets verwenden

Name | Beschreibung
--- | ---
`WX_CONFIG` | Pfad zum wxWidgets `wx-config`-Skript (mit unterschiedlichem Namen)
`WXRC_CMD` | Pfad zum wxWidgets `wxrc`-Programm (mit unterschiedlichem Namen)
`WX_VERSION` | Version der wxWidgets, die verwendet werden soll (z.B. `2.6`)
`WX_UNICODE` | Falls Unterstützung für Unicode nicht explizit definiert, jedoch verwendet wird, dann wird die Unterstützung automatisch aktiviert.

## 6.18.7. Verarbeitung in `bsd.port.pre.mk`

Falls die Variablen gleich nach dem Importieren von `bsd.port.pre.mk` benutzt werden sollen, so muss die Variable `WX_PREMK` definiert werden.

> Wichtig: Falls `WX_PREMK` definiert ist, so werden Version, Abhängigkeiten, Komponenten und vordefinierte Variablen nicht geändert, wenn die Variablen des wxWidgets-Ports nach dem Einbinden von `bsd.port.pre.mk` geändert werden.

Beispiel 6-8. Verwendung von wxWidgets-Variablen in Kommandos

Der folgende Ausschnitt zeigt die Verwendung von `WX_PREMK` durch Ausführen des `wx-config`-Skriptes, um die vollständige Version als Zeichenkette zu erhalten, diese dann einer Variablen zuzuweisen und die Variable anschließend einem Programm zu übergeben.

    USE_WX=         2.4
    WX_PREMK=       yes

    .include <bsd.port.pre.mk>

    .if exists(${WX_CONFIG})
    VER_STR!=       ${WX_CONFIG} --release

    PLIST_SUB+=     VERSION="${VER_STR}"
    .endif

> Anmerkung: Die wxWidgets-Variablen können problemlos in Kommandos benutzt werden, falls diese in Targets ohne gesetztes `WX_PREMK` verwendet werden.

## 6.18.8. Weitere `configure`-Argumente

Einige GNU `configure`-Skripte können wxWidgets nicht auffinden, falls nur die Umgebungsvariable `WX_CONFIG` gesetzt ist, sondern benötigen zusätzliche Argumente. Dafür kann die Variable `WX_CONF_ARGS` benutzt werden.

Tabelle 6-33. Zulässige Werte für `WX_CONF_ARGS`

Möglicher Wert | Resultierendes Argument
--- | ---
`absolute` | `--with-wx-config=${WX_CONFIG}`
`relative` | `--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}`

Zurück | Zum Anfang | Weiter
SDL verwenden | Nach oben | Verwendung von Lua

Fragen zum FreeBSD Ports-System richten Sie bitte an <ports@FreeBSD.org>, Fragen zu diesem Dokument hingegen an <de-bsd-translators@de.FreeBSD.org>.