qt_add_grpc
Erzeugt Qt-basierte C++-Dienste unter Verwendung eines Protobuf-Schemas
Hinweis: Dieser Befehl befindet sich in der Technologievorschau und kann sich in zukünftigen Versionen ändern.
Dieser Befehl wurde in Qt 6.5 eingeführt.
Normalerweise wird qtgrpcgen
über das CMake-Makro qt_add_grpc
aufgerufen.
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>] )
Hinweis: Derzeit wird nur die Codegenerierung von CLIENT
unterstützt.
Die Quelldateien werden von qtgrpcgen
erstellt und dem Ziel hinzugefügt. Wenn das Ziel bereits existiert, werden die Dateien zur Liste der Zielquellen hinzugefügt. Wenn das Ziel nicht existiert, wird es als Bibliothek erstellt, zu der Sie einen Link erstellen müssen.
Die gRPC™ Bibliothek, die mit dem Befehl qt_add_grpc
erzeugt wird, bezieht sich auf die protobuf-Symbole, die in Dienstaufrufen verwendet werden. Das bedeutet, dass Sie entweder ein gemeinsames Ziel in den Aufrufen von qt_add_protobuf und qt_add_grpc verwenden müssen oder die generierte protobuf Bibliothek mit der gRPC Bibliothek verlinken müssen.
In Anbetracht der obigen Aussage können Sie das Target sowohl für protobuf als auch für 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 getrennte Targets haben wollen, müssen Sie das gRPC Client-Target mit dem protobuf-Target linken:
# 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_FILES
gibt die Liste der .proto-Dateien an, die von der Codegenerierung verwendet werden.PROTO_INCLUDES
spezifiziert die Liste der Verzeichnisse, die nach protobuf-Abhängigkeiten durchsucht werden sollen.Hinweis: Der Ort der
PROTO_FILES
wird implizit als Teil des protobuf-Include-Pfads betrachtet.QML
erzeugt die QML-Client-API für den Dienst gRPC. Das Argument setzt die Qt-KomponenteGrpcQuick
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_DIRECTORY
definiert das Verzeichnis, in dem die generierten Dateien abgelegt werden. Standardmäßig wird das aktuelle Build-Verzeichnis verwendet.GENERATE_PACKAGE_SUBFOLDERS
verwendet den Paketnamen aus den.proto
Dateien, um die Ordnerstruktur für die generierten Dateien zu erstellen. Wenn das Paket zum Beispiel definiert ist als:package io.qt.test
werden die generierten Dateien in OUTPUT_DIRECTORY/io/qt/test/ abgelegt.COPY_COMMENTS
kopiert Kommentare aus den.proto
Dateien in den generierten Code.EXPORT_MACRO
gilt nur für die Erstellung einer neuen Shared Library aus <target>. Diese Option gibt den Basisnamen für das im generierten Code verwendete Exportmakro an. Der endgültige Makroname wird wieQPB_<EXPORT_MACRO>_EXPORT
aufgebaut. Wenn diese Option nicht gesetzt ist, wird der ZielnameEXPORT_MACRO
verwendet.Weitere ausführliche Informationen finden Sie unter Gemeinsame Bibliotheken erstellen.
OUTPUT_HEADERS
gibt eine Variable an, in der die Liste der generierten Header gespeichert wird. Diese Liste kann für die Definition von benutzerdefinierten Projektinstallationsregeln nützlich sein.OUTPUT_TARGETS
gibt eine Variable an, in der die Liste der generierten Targets gespeichert wird. Diese Liste kann für die Definition von benutzerdefinierten Projektinstallationsregeln nützlich sein.
Siehe auch Das qtgrpcgen Werkzeug.
© 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.