qt_add_grpc
Erzeugt Qt-basierte C++-Dienste unter Verwendung eines Protobuf-Schemas
Der Befehl ist in der Grpc-Komponente des Qt6-Pakets definiert. Laden Sie das Paket mit folgendem Befehl:
find_package(Qt6 REQUIRED COMPONENTS Grpc)Dieser Befehl wurde in Qt 6.5 eingeführt.
In der Regel wird „ qtgrpcgen “ über das CMake-Makro „ qt_add_grpc “ aufgerufen.
Übersicht
qt_add_grpc(<target> <CLIENT|SERVER>
PROTO_FILES <file> ...
[PROTO_INCLUDES <path> ...]
[QML]
[OUTPUT_DIRECTORY <dir>]
[GENERATE_PACKAGE_SUBFOLDERS]
[COPY_COMMENTS]
[EXPORT_MACRO <infix>]
[OUTPUT_HEADERS <var>]
[OUTPUT_TARGETS <var>]
[HEADER_GUARD <pragma|filename>]
)Hinweis: Derzeit wirdnur die Codegenerierung für „ CLIENT “ unterstützt.
Wenn versionlose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_grpc() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.
Beschreibung
Die Quelldateien werden von qtgrpcgen erstellt und dem Ziel hinzugefügt. Wenn das Ziel bereits existiert, werden die Dateien zur Quellliste des Ziels hinzugefügt. Wenn das Ziel nicht existiert, wird es als Bibliothek erstellt, die Sie einbinden müssen.
Die gRPC™ Bibliothek, die mit dem Befehl „ qt_add_grpc “ generiert wird, verweist auf die Protobuf-Symbole, die in Service-Aufrufen verwendet werden. Das bedeutet, dass Sie entweder sowohl bei Aufrufen von `qt_add_protobuf()` als auch von `qt_add_grpc()` dasselbe Ziel verwenden oder die generierte Protobuf-Bibliothek mit der Bibliothek „ gRPC “ verknüpfen müssen.
Unter Berücksichtigung der obigen Aussage können Sie das Ziel sowohl für den Protobuf- als auch für den „ gRPC “-Client-Code wiederverwenden:
# Generate the protobuf types first
qt_add_protobuf(test_service_client
PROTO_FILES
test_service.protobuf
)
...
# Reuse the protobuf target and extend it with \gRPC client
# functionality
qt_add_grpc(test_service_client CLIENT
PROTO_FILES
test_service.protobuf
)Wenn Sie separate Ziele verwenden möchten, müssen Sie das „ gRPC “-Client-Ziel mit dem Protobuf-Ziel verknüpfen:
# Generate the protobuf types first
qt_add_protobuf(test_service_protobuf
PROTO_FILES
test_service.protobuf
)
...
# Add separate target with the generated code of the \gRPC client.
qt_add_grpc(test_service_client CLIENT
PROTO_FILES
test_service.protobuf
)
target_link_libraries(test_service_client PRIVATE test_service_protobuf)Argumente
PROTO_FILESGibt die Liste der .proto -Dateien an, die vom Code-Generierungsprozess verwendet werden.PROTO_INCLUDESGibt die Liste der Verzeichnisse an, in denen nach Protobuf-Abhängigkeiten gesucht werden soll.Hinweis: Der Speicherort von „
PROTO_FILES“ wird implizit als Teil des Protobuf-Include-Pfads betrachtet.QMLGeneriert die QML-Client-API für den „ gRPC “-Dienst. Das Argument setzt die Qt-Komponente „GrpcQuick“ voraus.find_package(Qt6 6.8 REQUIRED COMPONENTS Quick Protobuf ProtobufQuick Grpc GrpcQuick) ... # Generate the protobuf types qt_add_protobuf(test_service_client PROTO_FILES test_service.protobuf QML ) ... # Generate \gRPC client functionality qt_add_grpc(test_service_client CLIENT PROTO_FILES test_service.protobuf QML )OUTPUT_DIRECTORYDefiniert das Verzeichnis, in dem die generierten Dateien abgelegt werden. Standardmäßig wird das aktuelle Build-Verzeichnis verwendet.GENERATE_PACKAGE_SUBFOLDERSVerwendet den Paketnamen aus den „.proto“-Dateien, um die Ordnerstruktur für die generierten Dateien zu erstellen. Wenn das Paket beispielsweise als „package io.qt.test“ definiert ist, werden die generierten Dateien in „OUTPUT_DIRECTORY/io/qt/test/“ abgelegt .COPY_COMMENTSKopiert Kommentare aus den „.proto“-Dateien in den generierten Code.EXPORT_MACROGilt nur beim Erstellen einer neuen gemeinsam genutzten Bibliothek aus dem <target>. Diese Option legt den Basisnamen für das im generierten Code verwendete Export-Makro fest. Der endgültige Makroname wird als „QPB_<EXPORT_MACRO>_EXPORT“ gebildet. Ist diese Option nicht gesetzt, wird der Zielname als „EXPORT_MACRO“ verwendet.Weitere ausführliche Informationen finden Sie unter „Erstellen von gemeinsam genutzten Bibliotheken “.
OUTPUT_HEADERSGibt eine Variable an, in der die Liste der generierten Header gespeichert wird. Diese Liste kann für die Definition benutzerdefinierter Projektinstallationsregeln nützlich sein.OUTPUT_TARGETSLegt eine Variable fest, in der die Liste der generierten Ziele gespeichert wird. Diese Liste kann für die Definition benutzerdefinierter Projektinstallationsregeln nützlich sein.HEADER_GUARDLegt den Mechanismus fest, der verwendet wird, um generierte Header-Dateien vor mehrfacher Einbindung zu schützen. Mögliche Werte sind „pragma“ und „filename“. Der Standardwert ist „filename“. Wenn die Option auf „pragma“ gesetzt wird, wird der moderne Pragma-Header-Guard generiert:#pragma once ...Wird die Option weggelassen oder auf `
filename` gesetzt, wird der `ifdef`-Wrapping-Guard generiert und der Dateiname `.proto` als Guard-Infix verwendet:#ifdef MYMESSAGES_QPB_H #define MYMESSAGES_QPB_H ... #endif // MYMESSAGES_QPB_HWählen Sie den bevorzugten Guard-Stil entsprechend Ihrer Projektstruktur aus.
Siehe auch Das Tool „qtgrpcgen“.
© 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.