Qt-Konfigurationsoptionen
configure ist ein Kommandozeilen-Werkzeug, das Sie bei der Erstellung einer benutzerdefinierten Version von Qt aus dem Quellcode unterstützt. Es ist Teil des Haupt-Quellverzeichnisses von Qt.
Seit Qt 6 ist configure ein Wrapper um cmake herum. CMake kann auch direkt aufgerufen werden. configure bietet zusätzliche Fehlerprüfung und Kompatibilität mit Qt 5.
Auf dieser Seite werden einige der configure-Optionen beschrieben. Für die vollständige Liste der Optionen geben Sie den Befehl configure -h ein.
Hinweis: Wenn nicht anders angegeben, beziehen sich die Befehle auf dieser Seite auf die Linux-Plattformen. Unter macOS und Windows sind der PATH und die Verzeichnisstruktur unterschiedlich, daher werden die Befehle variieren. Außerdem heißt das configure-Skript auf Windows-Systemen configure.bat.
Configure Arbeitsablauf
configure muss in einer funktionierenden Build-Umgebung aufgerufen werden, in der CMake, Compiler und die erforderlichen Build-Tools zur Verfügung stehen. Building Qt Sources listet diese Abhängigkeiten für jede Plattform auf.
Nach dem Einrichten einer solchen Umgebung besteht der typische Arbeitsablauf darin, ein separates Build-Verzeichnis zu erstellen und dann zuerst configure auszuführen, dann Qt zu bauen und dann Qt zu installieren:
~/qt-source/configure cmake --build . --parallel cmake --install .
Es kann sein, dass Sie mit verschiedenen configure-Flags experimentieren wollen und deshalb configure mehrmals ausführen. Beachten Sie, dass CMake configure-Optionen und Informationen über die Umgebung in einer Datei namens CMakeCache.txt zwischenspeichert. Löschen Sie diese Datei, wenn Sie ohne zwischengespeicherte Informationen neu beginnen wollen.
Quell-, Build- und Installationsverzeichnisse
Das Quellverzeichnis enthält den Quellcode, der aus dem Quellpaket oder dem Git-Repository bezogen wird. Im Build-Verzeichnis werden die Build-bezogenen Dateien, wie Build-Systemdateien, Objektdateien und andere Zwischendateien, gespeichert. Das Installationsverzeichnis ist der Ort, an dem die Binärdateien und Bibliotheken installiert werden, die entweder vom System oder von der Anwendung verwendet werden.
Es wird empfohlen, diese Verzeichnisse durch Shadow-Building und die Verwendung der Option -prefix getrennt zu halten. Dies ermöglicht es Ihnen, den Qt-Quellbaum von den Build-Artefakten und den Binärdateien, die in einem separaten Verzeichnis gespeichert sind, sauber zu halten. Diese Methode ist sehr praktisch, wenn Sie mehrere Builds aus demselben Quellbaum, aber für unterschiedliche Konfigurationen erstellen möchten. Um shadow-build zu erstellen, führen Sie configure aus einem separaten Verzeichnis aus:
mkdir ~/qt-build cd ~/qt-build ~/qt-source/configure -prefix /opt/Qt6
Die Konfiguration mit der Option -prefix bedeutet, dass die Qt-Binärdateien und -Bibliotheken in einem anderen Verzeichnis installiert werden, in diesem Fall in /opt/Qt6.
Beispiele, Tests und Werkzeuge
Standardmäßig konfiguriert configure nur die Bibliotheken und Werkzeuge von Qt. Sie können -make examples oder -make tests verwenden, um auch die Beispiele oder Tests zu erstellen, die mit Qt geliefert werden:
~/qt-source/configure -make examples -make tests
Sie können Qt auch so konfigurieren, dass die Beispiele, Tests und Werkzeuge zwar konfiguriert, aber nicht standardmäßig gebaut werden. Wenn Sie die CMake-Variablen QT_BUILD_EXAMPLES_BY_DEFAULT, QT_BUILD_TESTS_BY_DEFAULT und QT_BUILD_TOOLS_BY_DEFAULT auf OFF setzen, werden die entsprechenden Teile nicht von cmake --build .
gebaut. Stattdessen generiert CMake einzelne Targets, die Sie dann individuell bauen können.
Hier bauen wir Qt-Bibliotheken und -Tools, aber auch das NotePad-Beispiel:
~/qt-source/configure -make examples -- -D QT_BUILD_EXAMPLES_BY_DEFAULT=OFF cmake --build . --parallel cmake --build . --parallel --target notepad
Hinweis: Mit der Option -developer-build werden standardmäßig Tests gebaut. Siehe auch Entwickler-Builds weiter unten.
Build-Konfigurationen
Sie können Qt-Bibliotheken und -Werkzeuge in verschiedenen Varianten bauen, die jeweils für einen anderen Anwendungsfall optimiert sind.
Debug und Release Builds
-release weist den Compiler an, den Code zu optimieren und keine zusätzlichen Debugsymbole neben Qt und seinen Werkzeugen bereitzustellen.
-debug überspringt einige Optimierungen, um das Debuggen von Qt und seinen Werkzeugen zu erleichtern. Diese Option ermöglicht auch die Erzeugung von Debugsymbolen, mit denen Sie den Code und den Zustand der erstellten Bibliotheken in einem Debugger untersuchen können.
Schließlich können Sie mit -debug-and-release sowohl eine Debug- als auch eine Release-Variante der Qt-Bibliotheken in einem Durchgang erstellen. Dies wird nur unterstützt, wenn Sie einen Build für Windows konfigurieren.
Es gibt weitere Optionen, um die Konfigurationen zu optimieren:
- -force-debug-info: Erzeugt einen Release-Build mit Debug-Informationen.
- -separate-debug-info: Extrahiert die Debug-Informationen in eine separate Datei.
- -optimize-size: Optimiert Release-Builds auf Größe statt auf Geschwindigkeit.
Statische und Shared Builds
Qt-Module können als separate Bibliotheken erstellt werden, die von einer ausführbaren Datei beim Start (für Qt-Bibliotheken) oder zur Laufzeit (für Qt-Plugins) geladen werden. Dies wird als Shared Build bezeichnet und ist die Standardkonfiguration auf den meisten Plattformen. Die passende configure-Option ist -shared.
Sie können Qt auch so bauen, dass eine ausführbare Binärdatei alle Qt-Module, auf die sie verlinkt, und alle Qt-Plugins, die sie benötigt, enthält. Dies wird als statischer Build bezeichnet und kann bei der Konfiguration mit der Option -static ausgewählt werden.
CMake-Generatoren
Beim Konfigurieren können Sie einen CMake-Generator auswählen. Beachten Sie, dass CMake Generatoren unterstützt, die nicht mit Qt verwendet werden können. Daher wählt configure automatisch einen Generator für Sie aus.
configure verwendet immer den Ninja-Generator und das Build-Tool, wenn ein Ninja-Executable verfügbar ist. Ninja ist sowohl plattformübergreifend, als auch funktionsreich und performant und wird für alle Plattformen empfohlen. Die Verwendung anderer Generatoren kann funktionieren, wird aber nicht offiziell unterstützt.
Module und Funktionen
Der Qt-Quellcode ist in mehreren Verzeichnissen auf oberster Ebene organisiert, die als Untermodule bezeichnet werden, z. B. qtbase
, qtdeclarative
oder qtmultimedia
. Innerhalb dieser Untermodule finden Sie den Quellcode für die verschiedenen Qt-Module. Qt Core, Qt Quick, und Qt Multimedia sind Beispiele für solche Qt-Module.
Hinweis: Viele Submodule (Top-Level-Quellverzeichnisse) haben den gleichen Namen wie die Qt-Module, die sie implementieren, aber das ist nicht immer der Fall. Zum Beispiel enthält qtdeclarative
Qt Quick und Qt Qmlund verschiedene verwandte Module. Schauen Sie in der Datei README.md in den jeweiligen Verzeichnissen nach, um einen Überblick zu erhalten.
Untermodule können explizit ein- oder ausgeschlossen werden, um die Erstellungszeit zu begrenzen. Außerdem kann jedes Qt-Modul über Funktionen verfügen, die ebenfalls explizit aktiviert oder deaktiviert werden können.
Einschließen und Ausschließen von Qt-Submodulen
configure
Die Option -skip wird verwendet, um Submodule (Quellverzeichnisse der obersten Ebene) vom Qt-Build auszuschließen. Der Ausschluss eines Submoduls schließt alle Qt-Module innerhalb dieses Submoduls aus. Das qtwayland
Submodul enthält sowohl das Qt Wayland Compositor und das Qt Wayland QPA Plugin. Die Angabe von -skip qtwayland
als eine configure-Option schließt daher beide Qt-Module aus.
~/qt-source/configure -skip qtwayland
configure
Die Option -submodules kann verwendet werden, um einen Build zu konfigurieren, der nur die aufgelisteten Submodule und ihre Abhängigkeiten baut. Zum Beispiel wird durch die Angabe des qtmultimedia
Submoduls, Qt Multimedia und alle seine Abhängigkeiten werden in den Build einbezogen. Mehrere Submodule können durch Kommas getrennt werden.
~/qt-source/configure -submodules qtmultimedia,qtactiveqt
Features einschließen oder ausschließen
Die Optionen -feature-<feature> und -no-feature-<feature> schließen bestimmte Features ein bzw. aus.
Zum Beispiel können Sie die configure-Option -no-feature-accessibility verwenden, um die Unterstützung der Barrierefreiheit in Qt zu deaktivieren:
~/qt-source/configure -no-feature-accessibility
Verwenden Sie configure -list-features, um eine Liste aller verfügbaren Features in der Kommandozeile anzuzeigen. Beachten Sie, dass Features von anderen Features abhängen können, so dass das Deaktivieren eines Features Nebenwirkungen auf andere Features haben kann.
Bibliotheken von Drittanbietern
Die Qt-Quellpakete enthalten Bibliotheken von Drittanbietern. Um festzulegen, ob Qt die Systemversionen der Bibliotheken verwenden soll oder die gebündelte Version, übergeben Sie entweder -system oder -qt vor dem Namen der zu konfigurierenden Bibliothek.
Die folgende Tabelle fasst einige Drittanbieter-Optionen zusammen:
Name der Bibliothek | Gebündelt in Qt | Installiert im System |
---|---|---|
zlib | -qt-zlib | -system-zlib |
libjpeg | -qt-libjpeg | -system-libjpeg |
libpng | -qt-libpng | -system-libpng |
freetype | -qt-freetype | -system-freetype |
PCRE | -qt-pcre | -system-pcre |
HarfBuzz-NG | -qt-harfbuzz | -system-harfbuzz |
Es ist auch möglich, die Unterstützung für die meisten dieser Bibliotheken zu deaktivieren, indem man -no anstelle von -qt verwendet.
configure in Qt 6 verlässt sich auf CMake, um Bibliotheken von Drittanbietern zu finden. Dies geschieht durch die Überprüfung verschiedener Systempfade. Wenn Sie Bibliotheken an einem anderen Ort installiert haben, können Sie dies CMake mitteilen, indem Sie die Variable CMAKE_PREFIX_PATH setzen oder erweitern.
Eine vollständige Liste der Optionen finden Sie in der Hilfe von configure -help.
SSL
Qt Network kann so konfiguriert werden, dass es die Kommunikation für Secure Sockets Layer (SSL) unterstützt, aber es implementiert die eigentlichen Algorithmen nicht selbst. Es muss stattdessen auf andere Bibliotheken zurückgreifen.
Unter Windows kann Qt zu diesem Zweck die Secure Channel-Bibliothek des Systems verwenden (configure-Option -schannel). Unter macOS und iOS kann Qt so konfiguriert werden, dass es die SecureTransport-API verwendet (configure-Option -securetransport).
Die umfangreichste Unterstützung, die auch auf fast allen Zielplattformen funktioniert, bietet das OpenSSL Toolkit (Option -openssl). Qt benötigt OpenSSL 1.1.1 oder höher.
Qt kann auf drei Arten für die Verwendung von OpenSSL konfiguriert werden:
- Qt Network lädt OpenSSL-Bibliotheken (DLLs), wenn sie zum ersten Mal benötigt werden, zur Laufzeit. Wenn sie nicht gefunden werden, läuft die Anwendung weiter, kann aber keine SSL-Kommunikation durchführen. Dies wird durch die Verwendung der configure-Option -openssl-runtime aktiviert.
- Qt Network verweist auf die OpenSSL-Bibliotheken. Wenn sie zur Ladezeit nicht gefunden werden, kann die Anwendung nicht gestartet werden. Dies wird durch die Verwendung der configure-Option -openssl-linked aktiviert.
- Qt Network kompiliert gegen eine statische Version der OpenSSL-Bibliotheken, und OpenSSL wird Teil der Qt Network -Bibliothek. Dies wird durch die Verwendung der configure-Option openssl-linked und das Setzen der OPENSSL_USE_STATIC_LIBS-Variable auf ON aktiviert.
Setzen Sie die CMake-Variable OPENSSL_ROOT_DIR, wenn OpenSSL nicht an einem Standardort installiert ist und daher von configure nicht gefunden wird.
Siehe Secure Sockets Layer (SSL) Classes für weitere Anweisungen zu Qt mit SSL-Unterstützung.
Cross-Compilation Optionen
Um Qt für die plattformübergreifende Entwicklung und den Einsatz zu konfigurieren, müssen Sie zunächst eine passende Qt-Version für den Host-Rechner haben. Außerdem muss die Entwicklungstoolchain für die Zielplattform eingerichtet werden. Diese Einrichtung variiert zwischen den unterstützten Plattformen.
Übliche Optionen sind:
- -external-hostbindir - Pfad zu den Qt-Tools, die für diesen Rechner erstellt wurden.
- -device - Wählt devices/mkspec für die qmake-Begleitdateien.
- -device-option - Setzt zusätzliche qmake-Variablen.
Hinweis: Toolchains für Nicht-Desktop-Ziele kommen oft mit einer sogenannten sysroot, gegen die Qt konfiguriert werden muss.
Entwickler-Builds
Die Konfigurationsoption -developer-build ist eine Komfortoption, die den Build für die Entwicklung von Qt selbst optimiert. Sie sollte nicht verwendet werden, um Qt-Varianten zu bauen, die an Kunden ausgeliefert werden.
Bibliotheken in einem Entwickler-Build enthalten mehr exportierte Symbole als ein Standard-Build, und der gesamte Qt-Code wird mit einer höheren Warnstufe kompiliert. Außerdem wird der Standard-Präfix des Build-Verzeichnisses geändert, so dass Qt nicht mehr vor dem Testen installiert werden muss, und schließlich wird die Kompilierung von Qt-Autotests standardmäßig aktiviert.
Rekonfigurieren bestehender Builds
Das Qt-Build-System bietet eine grundlegende Unterstützung für die Rekonfiguration bestehender Qt-Builds mit einem anderen Satz von configure-Optionen, ist aber aufgrund der internen Arbeitsweise von CMake nicht sehr robust.
Der sicherste Weg, einen bestehenden Build zu rekonfigurieren, ist die Übergabe der Option -redo an configure. Dadurch wird die Datei CMakeCache.txt des Builds gelöscht, was einen relativ sicheren Zustand für die Neukonfiguration gewährleistet. Die ursprünglichen configure-Flags gelten auch für den rekonfigurierten Build.
Spezifische Optionen für Plattformen
Die folgenden Seiten enthalten Richtlinien zur Konfiguration von Qt für die Entwicklung bestimmter Plattformen:
- Erstellen von Qt für QNX
- Ein Embedded Linux Gerät konfigurieren
- Qt für Android - Erstellung aus dem Quellcode
- Qt für Linux/X11 - Aus dem Quellcode erstellen
- Qt für Windows - Erstellung aus dem Quellcode
- Qt für macOS - Erstellung aus dem Quellcode
- Qt für INTEGRITY - Tutorial zum Monolith-Projekt
- Qt für iOS - Erstellung aus dem Quellcode
- Qt für WebAssembly - Erstellung aus dem Quellcode
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.