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.:


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