Änderungen am Build-System in Qt 6
Ein Großteil der Arbeit an Qt 6 betraf die Art und Weise, wie Qt und seine Module erstellt werden. Das Ziel war es, Qt zukunftssicher zu machen, indem auf ein weit verbreitetes, beliebtes Build-Tool umgestiegen wurde: CMake.
Qt aus dem Quellcode kompilieren
Das Build-System von Qt 5 basierte auf qmake. In Qt 6 haben wir das Build-System auf CMake umgestellt.
Hinweis: Dies betrifft nur Benutzer, die Qt aus dem Quellcode kompilieren möchten. Sie können weiterhin qmake als Build-Tool für Ihre Anwendungen verwenden.
Es ist möglich, Qt direkt über die Befehlszeile durch Aufruf von cmake zu konfigurieren. Wir empfehlen jedoch weiterhin das Befehlszeilentool „configure“, das eine wohl benutzerfreundlichere Oberfläche und zusätzliche Fehlerprüfung bietet.
Siehe auch „Qt-Configure-Optionen“ für einen Überblick über die neue Configure-API.
CMake und Ninja als externe Abhängigkeiten
Sie benötigen eine aktuelle Version von CMake, um Qt zu konfigurieren und zu kompilieren. Für Qt 6.0 ist CMake 3.16 erforderlich. Ab Qt 6.2 ist CMake 3.21 erforderlich, wenn Qt als statische Bibliotheken kompiliert wird. Ab Qt 6.6 ist CMake 3.21.1 erforderlich, wenn Qt für Apple-Plattformen kompiliert wird. Ab Qt 6.9 ist CMake 3.22 erforderlich. Ab Qt 6.12 ist CMake 3.25 erforderlich. Außerdem muss eine aktuelle Version des Ninja-Tools installiert sein.
Sowohl CMake als auch Ninja sind Open-Source-Tools, die auf verschiedene Weise installiert werden können. Sie sind außerdem unter Qt Online Installer verfügbar.
Eine detailliertere Übersicht über die Build-Anforderungen auf verschiedenen Plattformen finden Sie unter „Qt-Quellcode kompilieren “.
Auswahl einer Qt-Lizenz
In Qt 5 mussten Sie bei „configure“ auswählen, ob Sie Qt unter kommerziellen oder Open-Source-Lizenzen nutzen wollten. Wenn Sie über mehrere kommerzielle Lizenzen verfügten, mussten Sie zudem die Lizenz auswählen, die Sie verwenden wollten.
In Qt 6 haben wir beide Auswahlmöglichkeiten entfernt. Die Auswahl der Ihnen zur Verfügung stehenden Lizenzen hängt von den rechtlichen Vereinbarungen ab, die Sie mit The Qt Company getroffen haben, und nicht von bestimmten Artefakten.
Die „configure“-Optionen -opensource, -commercial und -confirm-license werden in Qt 6 ignoriert und könnten in zukünftigen Versionen von Qt entfernt werden.
Erneutes Ausführen von „configure“
Manchmal möchten Sie „configure“ erneut ausführen, um verschiedene „configure“-Optionen zu testen. In Qt 5 speicherte „configure“ verschiedene Informationen aus der Umgebung zwischen den Durchläufen im Cache, startete aber ansonsten aus einem sauberen Zustand: Sie mussten „-redo“ verwenden oder das Shell-Skript „config.status“ nutzen, um Argumente aus einem vorherigen Durchlauf wiederzuverwenden. Außerdem konnten Sie die Optionen -recheck und -recheck-all verwenden, um eine erneute Auswertung der zwischengespeicherten Tests zu erzwingen.
CMake und damit auch „configure“ in Qt 6 speichern Ergebnisse noch intensiver im Cache. Erkannte Umgebungs-Einstellungen, aber auch über andere Befehlszeilenargumente vorgenommene Auswahlen, werden in einer Datei namens „CMakeCache.txt“ gespeichert. Wenn Sie „configure“ mit neuen Optionen ausführen, werden die neuen Optionen in diese Datei übernommen. Löschen Sie die Datei, um von Grund auf neu zu beginnen. Die oben genannten „configure“-Optionen werden nicht mehr unterstützt.
Nur Teile von Qt erstellen
Das Build-System von Qt 5 ermöglichte es Ihnen, das Build-Tool (z. B. ` make`) in einem Unterverzeichnis auszuführen, um einen teilweisen Neuaufbau durchzuführen.
CMake folgt einem anderen Paradigma und erfordert, dass Sie Ziele aus dem obersten Verzeichnis heraus erstellen, wobei der gesamte Build berücksichtigt wird. Verwenden Sie „ninja -t targets“, um alle verfügbaren Ziele im Build anzuzeigen.
Erkennen von Bibliotheken von Drittanbietern
Eine der Aufgaben von `configure` besteht darin, die Verfügbarkeit verschiedener Pakete von Drittanbietern in der Umgebung zu ermitteln. In Qt 5 nutzte `configure` hierfür optional `pkg-config`, führte aber auch verschiedene Tests zur Kompilierungszeit durch. Diese Prüfungen konnten über die Befehlszeile mit verschiedenen Variablen wie `ICU_PREFIX`, `ICU_LIBS` usw. angepasst werden.
In Qt 6 stützt sich „configure“ bei der Auflösung von Abhängigkeiten auf CMake. Für die meisten Abhängigkeiten setzt dies voraus, dass die Bibliothek eines Drittanbieters ein CMake-Paket im CMake-Suchpfad bereitstellt. Mit der Variablen „ CMAKE_PREFIX_PATH “ können Sie diesen Pfad um benutzerdefinierte Speicherorte erweitern.
Einige Abhängigkeiten wie OpenSSL werden zudem durch die Logik innerhalb von CMake erkannt: Wenn OpenSSL nicht erkannt wird, müssen Sie möglicherweise die CMake-Variable „ OPENSSL_ROOT_DIR “ so setzen, dass sie auf das Installationsverzeichnis verweist.
Auswahl der Toolchain
In Qt 5 verwendete „configure“ sogenannte „mkspecs“, um sowohl die Build- als auch die Zielplattformen anzugeben (Optionen-platform, -xplatform und -device ). CMake verwendet diese nicht, sondern stützt sich stattdessen auf Umgebungsprüfungen und Toolchain-Dateien (siehe auch die Dokumentation zu CMake-Toolchains). Die Optionen -platform und -xplatform sind weiterhin verfügbar, werden jedoch nur verwendet, um die Standardwerte für das generierte qmake-Tool festzulegen.
Cross-Kompilierung von Qt
Cross-Compiling bezeichnet das Kompilieren von Code für ein Computersystem (das Zielsystem) auf einem anderen System (dem Host). Eine Build-Umgebung für das Cross-Compiling von Qt-Anwendungen erfordert, dass Qt-Tools auf dem Host verfügbar sind (z. B. moc, rcc) sowie Qt-Bibliotheken, die für das Zielsystem erstellt werden.
In Qt 5 ermöglichte es „configure“, sowohl die Host-Tools als auch die Ziel-Tools und -Bibliotheken in einem Schritt zu erstellen. In Qt 6 wird dies nicht mehr unterstützt. Stattdessen muss Qt auf dem Host installiert und ausgeführt sein, bevor Sie Qt für das Zielsystem cross-kompilieren können. Das installierte Qt muss zudem dieselbe Version haben wie die, die cross-kompiliert werden soll.
Weitere Informationen zum Cross-Kompilieren finden Sie unter „Ein Embedded-Linux-Gerät konfigurieren“, „Qt für Android – Kompilieren aus dem Quellcode“ und „Qt für iOS – Kompilieren aus dem Quellcode“.
Portierung von Qt-Plugins und zusätzlichen Bibliotheken
Zwar wird qmake weiterhin für die Erstellung von Qt-Anwendungen unterstützt, es kann jedoch nicht mehr zum Kompilieren benutzerdefinierter Qt-Plugins oder von Bibliotheken verwendet werden, die auf internen Komponenten des Qt-5-Build-Systems basieren. Solche Bibliotheken oder Plugins müssen für die Verwendung mit Qt 6 auf CMake portiert werden.
Zum Zeitpunkt der Veröffentlichung von Qt 6.0 befindet sich die API zum Erstellen benutzerdefinierter Qt-Plugins oder -Bibliotheken noch in der Tech-Preview, was bedeutet, dass sie sich in zukünftigen Versionen noch ändern kann. Eine öffentliche, stabile API wird in einer späteren Qt-6-Version zur Verfügung gestellt.
Verwandte Themen
- Änderungen an Qt-Modulen in Qt 6 – Eine Liste der API-Änderungen in Qt-Modulen
- Änderungen an unterstützten Modulen – Status von Qt-5-Modulen in Qt 6.0
- Kompatibilität zwischen Qt 5 und Qt 6 – Erstellen von Anwendungen sowohl mit Qt 5 als auch mit Qt 6
© 2026 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.