Das Werkzeug qtgrpcgen
Das Werkzeug qtgrpcgen
kann verwendet werden, um Qt GRPC Dienstklassen aus einem Protobuf-Schema zu erzeugen. Das Werkzeug wird vom CMake Qt6::GrpcTools
Paket bereitgestellt. Es arbeitet als eine Erweiterung des protoc
Werkzeugs von Google.
find_package(Qt6 COMPONENTS GrpcTools REQUIRED)
Verwendung
Qt bietet CMake-Funktionen, die die Verwendung des Tools qtgrpcgen
erleichtern. Wenn Sie CMake als Build-Tool verwenden, ist es besser, die Qt CMake API zu benutzen. Für andere Build-Systeme als CMake können Sie die Befehle, die im Abschnitt qtgrpcgen ausführen beschrieben sind, manuell anpassen.
Anmerkung: Es gibt keine explizite Unterstützung für das Bauen von gRPC™ und Protobuf-Applikationen unter Verwendung des Qt GRPC Moduls mit qmake.
CMake
Die folgenden CMake-Befehle integrieren einen gRPC -Dienst in ein Qt-Projekt.
Erzeugt Qt-basierte C++-Dienste unter Verwendung eines Protobuf-Schemas |
Normalerweise wird qtgrpcgen
über CMake mit dem Makro qt_add_grpc
aufgerufen, wie im folgenden Beispiel gezeigt:
cmake_minimum_required(VERSION 3.16...3.22) project(MyProject) find_package(Qt6 REQUIRED COMPONENTS Protobuf Grpc) qt_standard_project_setup() qt_add_executable(MyApp main.cpp) qt_add_protobuf(MyApp PROTO_FILES path/to/messages.proto ) qt_add_grpc(MyApp CLIENT PROTO_FILES path/to/service.proto ) target_link_libraries(MyApp PRIVATE Qt6::Protobuf Qt6::Grpc)
Das obige Beispiel ruft die CMake-Funktion qt_add_grpc()
auf, um die Codegenerierung Qt GRPC für service
Abschnitte innerhalb des angegebenen Protobuf-Schemas zu starten.
Hinweis: Wenn das Protobuf-Schema auch message
Definitionen enthält, sollte die qt_add_protobuf()
CMake-Funktion ebenfalls aufgerufen werden, um die Qt Protobuf Codegenerierung zu starten.
Da wir das ausführbare Ziel wiederverwenden, werden alle generierten Dateien an das Ziel angehängt und die Include-Verzeichnisse werden entsprechend aktualisiert.
Manuelles Ausführen von qtgrpcgen
protoc --plugin=protoc-gen-qtgrpc=<path/to/bin/>qtgrpcgen \ --qtgrpc_out="[<options>:]<output_dir>" \ [--qtgrpc_opt="<options>"] \ [-I/extra/proto/include/path] \ <protofile>.proto
Das Argument options
ist eine durch Semikolon getrennte Liste von Optionen. Sie kann durch Anhängen von options
an das Argument --qtgrpc_out
, getrennt durch einen Doppelpunkt, oder durch ein separates Argument, --qtgrpc_opt
, übergeben werden. Sie können die entsprechenden Schlüssel auch als Umgebungsvariable QT_GRPC_OPTIONS
übergeben. Die Schlüssel müssen als durch Semikolon getrennte Liste übergeben werden:
export QT_GRPC_OPTIONS="COPY_COMMENTS;GENERATE_PACKAGE_SUBFOLDERS"
Optionen
Der Generator unterstützt Optionen, die zur Abstimmung der Generierung angegeben werden können. Optionen haben direkte Aliase in der Funktion qt_add_grpc. Die folgenden Optionen werden unterstützt:
COPY_COMMENTS
kopiert Kommentare aus den.proto
Dateien in den generierten Code.GENERATE_PACKAGE_SUBFOLDERS
verwendet den Paketnamen aus den.proto
Dateien, um die Ordnerstruktur für die generierten Dateien zu erstellen. Zum Beispiel, wenn das Paket definiert ist als:package io.qt.test
werden die generierten Dateien in OUTPUT_DIRECTORY/io/qt/test/ abgelegt.EXPORT_MACRO
definiert den Basisnamen für das im generierten Code verwendete Exportmakro. Der endgültige Makroname wird wieQPB_<EXPORT_MACRO>_EXPORT
aufgebaut. Wenn diese Option nicht gesetzt ist, wird kein Exportmakro erzeugt.Seit Qt 6.8 wird das folgende Format unterstützt:
EXPORT_MACRO=macro_name[:macro_output_file[:<true|false>]]
. Dieses Format erlaubt es Ihnen, den Namen der Header-Datei anzugeben, die das Exportmakro enthält, und explizit zu steuern, ob es generiert wird.Hinweis: Wenn <macro_output_file> nicht angegeben wird, wird die Option auf die vorherige Syntax zurückgesetzt.
QML
aktiviert die Erzeugung eines QML-Clients für den Dienst gRPC.
© 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.