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

# 6.9. Benutzung von Qt

## 6.9.1. Ports, die Qt benötigen

Tabelle 6-7. Variablen für Ports, die Qt benötigen

`USE_QT_VER` | Der Port benutzt das Qt-Toolkit. Mögliche Werte sind `3` und `4`; diese spezifizieren die Major Version von Qt, die benutzt werden soll. Entsprechende Parameter werden an das `configure`-Skript und `make` übergeben.
`QT_PREFIX` | Enthält den Pfad, wohin Qt installiert ist (nur lesbare Variable).
`MOC` | Enthält den Pfad von `moc` (nur lesbare Variable). Voreingestellt entsprechend des `USE_QT_VER`-Werts.
`QTCPPFLAGS` | Zusätzliche Compiler-Flags, die über `CONFIGURE_ENV` an das Qt-Toolkit übergeben werden. Voreingestellt entsprechend des `USE_QT_VER`-Wertes.
`QTCFGLIBS` | Zusätzliche Bibliotheken, die über `CONFIGURE_ENV` für das Qt-Toolkit gelinkt werden sollen. Voreingestellt entsprechend des `USE_QT_VER`-Wertes.
`QTNONSTANDARD` | Änderungen von `CONFIGURE_ENV`, `CONFIGURE_ARGS` und `MAKE_ENV` sollen unterdrückt werden.

Tabelle 6-8. Zusätzliche Variablen für Ports, die Qt 4.xi benutzen

`QT_COMPONENTS` | Spezifiziert Tool– und Bibliothek-Abhängigkeiten für Qt4. Siehe unten für Details.
`UIC` | Enthält den Pfad von `uic` (nur lesbare Variable). Voreingestellt entsprechend des `USE_QT_VER`-Wertes.
`QMAKE` | Enthält den Pfad von `qmake` (nur lesbare Variable). Voreingestellt entsprechend des `USE_QT_VER`-Wertes.
`QMAKESPEC` | Enthält den Pfad der Konfigurationsdatei für `qmake` (nur lesbare Variable). Voreingestellt entsprechend des `USE_QT_VER`-Wertes.

Wenn `USE_QT_VER` gesetzt ist, werden dem `configure`-Skript einige nützliche Einstellungen übergeben:

    CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \
    	         --with-qt-libraries=${QT_PREFIX}/lib \
    	         --with-extra-libs=${LOCALBASE}/lib \
    	         --with-extra-includes=${LOCALBASE}/include
    CONFIGURE_ENV+=  MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \
    	         QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}"

Wenn `USE_QT_VER` auf `4` gesetzt ist, werden auch die folgenden Einstellungen übergeben:

    CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}"
    MAKE_ENV+=      QMAKESPEC="${QMAKESPEC}"

## 6.9.2. Komponentenauswahl (nur bei Qt 4.x)

Wenn `USE_QT_VER` auf 4 gesetzt ist, können individuelle Qt4-Tool- und Bibliotheksabhängigkeiten in der Variable `QT_COMPONENTS` angegeben werden. An jede Komponente kann `_build` oder `_run` als Suffix angehängt werden, was eine Abhängigkeit zur Build- bzw. Laufzeit angibt. Ohne Suffix gilt die Abhängigkeit sowohl zur Build- als auch zur Laufzeit. Bibliothekskomponenten sollten normalerweise ohne Suffix angegeben werden, Tool-Komponenten mit `_build` und Plugin-Komponenten mit `_run`. Die gebräuchlichsten Komponenten werden im Folgenden angegeben (alle verfügbaren Komponenten sind in `_QT_COMPONENTS_ALL` in `/usr/ports/Mk/bsd.qt.mk` aufgelistet):

Tabelle 6-9. Verfügbare Qt4-Bibliothekskomponenten

Name | Beschreibung
--- | ---
`corelib` | Kern-Bibliothek (kann weggelassen werden– es sei denn, der Port benutzt nichts außer `corelib`)
`gui` | Graphische Benutzeroberflächen-Bibliothek
`network` | Netzwerk-Bibliothek
`opengl` | OpenGL-Bibliothek
`qt3support` | Qt3-Kompatibilitäts-Bibliothek
`qtestlib` | Modultest-Bibliothek
`script` | Skript-Bibliothek
`sql` | SQL-Bibliothek
`xml` | XML-Bibliothek

Sie können herausfinden, welche Bibliotheken die Applikation benötigt, indem Sie nach erfolgreicher Kompilierung `ldd` auf die Hauptbinärdatei anwenden.

Tabelle 6-10. Verfügbare Qt4-Tool-Komponenten

Name | Beschreibung
--- | ---
`moc` | meta object compiler (wird zum Build fast jeder Qt-Applikation benötigt)
`qmake` | Makefile-Generator / Build-Werkzeug
`rcc` | Resource-Compiler (wird benötigt, falls die Applikation `*.rc` oder `*.qrc` Dateien enthält)
`uic` | User-Interface-Compiler (wird benötigt, falls die Applikation von Qt-Designer erzeugte `*.ui` Dateien enthält - gilt für praktisch jede Qt-Applikation mit einer GUI)

Tabelle 6-11. Verfügbare Qt4-Plugin-Komponenten

Name | Beschreibung
--- | ---
`iconengines` | SVG-Icon-Engine Plugin (wenn die Applikation SVG-Icons mitliefert)
`imageformats` | Bildformatplugins für GIF, JPEG, MNG und SVG (wenn die Applikation Bilddateien mitliefert)

Beispiel 6-3. Qt4-Komponenten auswählen

In diesem Beispiel benutzt die portierte Applikation die Qt4 GUI-Bibliothek, die Qt4-Core-Bibliothek, alle Qt4-Codeerzeugungstools und Qt4's Makefile Generator. Da die GUI-Bibliothek eine Abhängigkeit von der Core-Bibliothek impliziert, muss corelib nicht angegeben werden. Die Qt4-Codeerzeugungstools moc, uic und rcc, sowie der Makefile Generator qmake werden nur für den Build benötigt, deshalb bekommen die den Suffix `_build`:

    USE_QT_VER=    4
    QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build

## 6.9.3. Zusätzliche Besonderheiten

Wenn die Applikation keine `configure` Datei, sondern eine `.pro` Datei hat, können Sie das Folgende benutzen:

    HAS_CONFIGURE=    yes

    do-configure:
    	@cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
    	        ${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro

Beachten Sie die Ähnlichkeit mit der `qmake`-Zeile im mitgelieferten `BUILD.sh`-Skript. Die Übergabe von `CONFIGURE_ENV` stellt sicher, dass `qmake` die `QMAKESPEC`-Variable übergeben bekommt, ohne die es nicht funktioniert. `qmake` erzeugt Standard-Makefiles, sodass es nicht nötig ist ein eigenes neues `build`-Target zu schreiben.

Qt-Applikationen sind oft so geschrieben, dass sie plattformübergreifend sind, und oft ist X11/Unix nicht die Plattform, auf der sie entwickelt werden. Das sorgt oft für bestimmte fehlende Kleinigkeiten wie z.B.:

- Fehlende zusätzliche Include-Pfade. Viele Applikationen kommen mit System-Tray-Icon Support– unterlassen es aber Includes oder Bibliotheken in den X11 Verzeichnissen zu suchen. Sie können `qmake` über die Kommandozeile sagen, es soll Verzeichnisse zu den Include- und Bibliotheks-Suchpfaden hinzufügen - z.B.:

      ${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \
          LIBS+=-L${LOCALBASE}/lib sillyapp.pro

- Falsche Installations-Pfade. Manchmal werden Daten wie Icons oder .desktop-Dateien per Vorgabe in Verzeichnisse installiert, die nicht von XDG-kompatiblen Applikationen durchsucht werden. `editors/texmaker` ist hierfür ein Beispiel– siehe `patch-texmaker.pro` im `files`-Verzeichnis dieses Ports als eine Vorlage, die zeigt, wie man dies direkt in der Qmake Projektdatei löst.

Zurück | Zum Anfang | Weiter
Benutzung von GNOME | Nach oben | Benutzung von KDE

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