qt_add_grpc

Protobuf スキーマを使用して Qt ベースの C++ サービスを生成します。

注: このコマンドはテクノロジープレビューであり、将来のリリースで変更される可能性があります。

このコマンドは Qt 6.5 で導入されました。

通常、qtgrpcgenqt_add_grpc CMake マクロを通して呼び出されます。

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>]
)

注: 現在、CLIENT コード生成のみがサポートされています。

ソース・ファイルはqtgrpcgen によって作成され、ターゲットに追加されます。ターゲットがすでに存在する場合、ファイルはターゲット・ソース・リストに追加されます。ターゲットが存在しない場合は、ライブラリとして作成され、リンクする必要があります。

リンク先の gRPCqt_add_grpc コマンドを使用して生成されるライブラリは、サービス・コールで使用されるprotobufシンボルを参照します。つまり、qt_add_protobufと qt_add_grpcの両方の呼び出しで共通のターゲットを使用するか、生成されたprotobufライブラリをgRPC

上記の記述を考慮すると、protobufとgRPC クライアントコードの両方でターゲットを再利用することができます:

# 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
)

ターゲットを別々にしたい場合は、gRPC クライアントターゲットを protobuf ターゲットにリンクする必要があります:

# 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)

引数

  • PROTO_FILES は、コード生成手順で使用される.protoファイルのリストを指定します。
  • PROTO_INCLUDES protobufの依存関係を検索するディレクトリのリストを指定します。

    注: PROTO_FILES の場所は、暗黙的に protobuf インクルードパスの一部と見なされます。

  • QML は サービスの QML クライアント API を生成します。この引数には Qt コンポーネントが必要です。gRPC GrpcQuick
    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 生成されたファイルを置くディレクトリを定義します。デフォルトでは、現在のビルドディレクトリが使用されます。
  • GENERATE_PACKAGE_SUBFOLDERS は、 ファイルのパッケージ名指定子を使用して、生成されるファイルのフォルダ構造を作成します。たとえば、パッケージがと定義されている場合、生成されたファイルは.proto package io.qt.testOUTPUT_DIRECTORY/io/qt/test/ に置かれます。
  • COPY_COMMENTS .proto ファイルのコメントを生成コードにコピーします。
  • EXPORT_MACRO <target> から新しい共有ライブラリを作成する場合にのみ適用されますこのオプションは、生成されるコードで使用されるエクスポート・マクロのベース名を指定します。最終的なマクロ名は のように構成されます。このオプションが設定されていない場合、ターゲット名は として使用されます。QPB_<EXPORT_MACRO>_EXPORT EXPORT_MACRO

    さらに詳しい情報については、共有ライブラリの作成をお読みください。

  • OUTPUT_HEADERS は、生成されたヘッダーのリストを格納する変数を指定します。このリストは、カスタム・プロジェクトのインストール・ルールを定義するのに便利です。
  • OUTPUT_TARGETS は、生成されたターゲットのリストを格納する変数を指定します。このリストは、カスタム・プロジェクトのインストール・ルールを定義するのに便利です。

qtgrpcgen ツール」も参照してください

© 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.