qtgrpcgen ツール

qtgrpcgen ツールを使用して、protobuf スキーマから Qt GRPC サービスクラスを生成できます。このツールはCMakeQt6::GrpcTools パッケージで提供されています。Googleのprotoc ツールの拡張として動作します。

find_package(Qt6 COMPONENTS GrpcTools REQUIRED)

使用方法

Qtは、qtgrpcgen ツールの使用を容易にするCMake関数を提供しています。ビルドツールとしてCMakeを使用する場合は、Qt CMake APIを使用することをお勧めします。CMake以外のビルドシステムでは、Running qtgrpcgen manuallyで説明されているコマンドを使用してください。

注意: Qt GRPC モジュールを使用した gRPC および Protobuf アプリケーションをqmake でビルドするための明確なサポートはありません。

CMake

以下の CMake コマンドは、gRPC サービスを Qt プロジェクトに統合します。

qt_add_grpc

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

通常、qtgrpcgen は、次の例に示すように、qt_add_grpc マクロを使用して CMake から呼び出されます:

cmake_minimum_required(VERSION 3.16...3.22)
project(MyProject)

find_package(Qt6 REQUIRED COMPONENTS Protobuf Grpc)
qt_standard_project_setup()

qt_add_protobuf(MyProtoMessageLib
    PROTO_FILES
        path/to/helloworld.proto
    PROTO_INCLUDES
        path/to/proto/include
)

qt_add_grpc(MyGrpcClient CLIENT
    PROTO_FILES
        path/to/helloworld.proto
    PROTO_INCLUDES
        path/to/proto/include
)

qt_add_executable(MyApp main.cpp)

target_link_libraries(MyApp PRIVATE MyGrpcClient MyProtoMessageLib Qt6::Protobuf)

上記の例では、qt_add_grpc() CMake関数を呼び出して、MyGrpcClient というライブラリを生成しています。

注意: .proto ファイル API にメッセージが含まれている場合、qt_add_protobuf() CMake 関数を呼び出して、プロジェクトの protobuf メッセージ・クラスを生成する必要があります。

最後に、この例では、MyGrpcClientおよびMyProtoMessageLibライブラリにリンクするMyAppという実行可能ファイルのターゲットが作成されます。

qtgrpcgen を手動で実行する

protoc --plugin=protoc-gen-qtgrpc=<path/to/bin/>qtgrpcgen \
    --qtgrpc_out="[<options>:]<output_dir>" \
    [--qtgrpc_opt="<options>"] \
    [-I/extra/proto/include/path] \
    <protofile>.proto

options 引数はセミコロンで区切られたオプションのリストです。コロンで区切られたoutput_dir 引数の前にoptions を付けるか、別の引数--qtgrpc_opt で渡すことができる。また、対応するキーをQT_GRPC_OPTIONS 環境変数として渡すこともできる。キーは、セミコロンで区切られたリストとして示されなければならない:

export QT_GRPC_OPTIONS="COPY_COMMENTS;GENERATE_PACKAGE_SUBFOLDERS"

オプション

ジェネレータは、生成を調整するためのオプションをサポートしています。オプションはqt_add_grpc関数に直接エイリアスを持っています。以下のオプションがサポートされています:

  • COPY_COMMENTS .proto ファイルのコメントを生成コードにコピーします。
  • GENERATE_PACKAGE_SUBFOLDERS 生成されるファイルのフォルダ構造を作成するために、 ファイルからパッケージ名指定子を使用します。たとえば、パッケージがと定義されている場合、生成されたファイルは.proto package io.qt.testOUTPUT_DIRECTORY/io/qt/test/ に置かれます。
  • EXPORT_MACRO は、生成されるコードで使用されるエクスポート・マクロのベース名を定義します。最終的なマクロ名は のように構築される。このオプションが設定されていない場合、エクスポートマクロは生成されません。QPB_<EXPORT_MACRO>_EXPORT

    Qt 6.8 以降では、以下の形式がサポートされています:EXPORT_MACRO=macro_name[:macro_output_file[:<true|false>]].このフォーマットでは、エクスポート・マクロを含むヘッダー・ファイルの名前を指定し、それが生成されるかどうかを明示的に制御することができます。

    注意: <macro_output_file>が指定されていない場合、オプションのデフォルトは以前の構文になります。

  • QML を指定すると、gRPCサービス用のQMLクライアントを生成できるようになります。

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