Qt in CMake-Projekten verfügbar machen
Derzeit ist die einzige unterstützte Methode, Qt für Benutzerprojekte verfügbar zu machen, die Vorinstallation auf dem System oder ein gleichwertiger Arbeitsablauf, der Qt im Voraus baut und es für find_package
zur Verfügung stellt, wie z.B. vcpkg
.
Bei Verwendung von Qt Creator oder qt-cmake
(qt-cmake.bat
unter Windows) wird der Qt-Installationsort automatisch an den zugrunde liegenden CMake-Aufruf weitergeleitet.
Wenn Sie cmake
direkt verwenden, sollten die allgemeinen Suchpfade, die CMake verwendet, die meisten Nicht-Benutzer-Installationen von Qt abdecken. Um mehr Kontrolle darüber zu haben, welches Qt-Paket verwendet werden soll, können Sie https://cmake.org/cmake/help/latest/variable/PackageName_ROOT.html Qt6_ROOT
als Umgebungs- oder Cache-Variable übergeben, die auf den Qt-Installationspfad zeigt, oder indem Sie CMAKE_PREFIX_PATH
auf ähnliche Weise hinzufügen oder anhängen. Wenn der Installationspfad beispielsweise "~/Qt/6.9.1/gcc_64"
lautet, würden Sie ihn auf der Kommandozeile als -DQt6_ROOT=$HOME/Qt/6.9.1/gcc_64
übergeben.
Hinweis: Beim Cross-Compiling (Kompilieren für eine andere Plattform als die, auf der Sie sich befinden, z. B. WebAssembly oder Android) und bei der Verwendung von Vanilla cmake
setzen Sie CMAKE_TOOLCHAIN_FILE
anstelle von Suchpfaden wie Qt6_ROOT
oder CMAKE_PREFIX_PATH
. Unter Linux befindet sich die Toolchain-Datei (spezifisch für eine bestimmte Zielplattform) in der Regel unter einem ähnlichen Pfad wie diesem: "~/Qt/6.9.1/wasm_singlethread/lib/cmake/Qt6/qt.toolchain.cmake"
. Sie setzt die erforderlichen Variablen wie CMAKE_PREFIX_PATH
, CMAKE_FIND_ROOT_PATH
und QT_HOST_PATH
.
cmake_minimum_required(VERSION 3.16) project(helloworld) find_package(Qt6 REQUIRED)
Das Qt-Paket ist in verschiedene Module aufgeteilt, die Sie je nach Umfang Ihres Projekts einbinden müssen, von denen das grundlegendste ist
find_package(Qt6 REQUIRED COMPONENTS Core)
Modernes CMake unterstützt andere Abhängigkeitsprovider wie FetchContent
, die Verwendung von Qt mit FetchContent
wird jedoch aufgrund der engen Integration von Qt-Funktionen in CMake selbst nicht unterstützt. Das Hinzufügen von Qt-Quellen über add_subdirectory
und Git-Submodule wird ebenfalls nicht unterstützt.
Hinweis: Der Aufruf von find_package(Qt6)
in einem anderen Unterverzeichnis als dem, in dem es verwendet wird, oder innerhalb einer function
wird nicht unterstützt. Dies kann zu verschiedenen Fehlern an unvorhersehbaren Stellen führen.
Rufen Sie stattdessen wiederholt find_package(Qt6)
in allen Unterverzeichnissen auf, die Qt-Funktionen verwenden, oder verschieben Sie den Aufruf von find_package(Qt6)
in das Stammverzeichnis CMakeLists.txt
.
© 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.