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-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_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 wie QPB_<EXPORT_MACRO>_EXPORT aufgebaut. Wenn diese Option nicht gesetzt ist, wird der Zielname EXPORT_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.