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

qt_add_grpc コマンドを使用して生成される 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 gRPCサービス用の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 Toolも参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。