qtgrpcgen ツール

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

find_package(Qt6 COMPONENTS GrpcTools REQUIRED)

使用方法

Qt は、qtgrpcgen ツールの使用を容易にする CMake 関数を提供しています。CMakeをビルドツールとして使用する場合は、Qt CMake APIを利用する方が良いでしょう。CMake以外のビルドシステムでは、qtgrpcgenの実行で説明されているコマンドを手動で調整することができます。

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

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_executable(MyApp main.cpp)

qt_add_protobuf(MyApp
    PROTO_FILES
        path/to/messages.proto
)

qt_add_grpc(MyApp CLIENT
    PROTO_FILES
        path/to/service.proto
)

target_link_libraries(MyApp PRIVATE Qt6::Protobuf Qt6::Grpc)

上記の例では、qt_add_grpc() CMake関数を呼び出して、提供されたprotobufスキーマ内のservice セクションのQt GRPC コード生成を開始します。

注: protobufスキーマにmessage 定義も含まれている場合は、qt_add_protobuf() CMake関数も呼び出して、Qt Protobuf コード生成を開始する必要があります。

実行可能ターゲットを再利用するので、生成されたファイルはすべてターゲットに追加され、インクルード・ディレクトリーもそれに応じて更新されます。

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 引数はセミコロンで区切られたオプションのリストである。コロンで区切られた--qtgrpc_out 引数に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 を指定すると、 サービス用の QML クライアントを生成できるようになります。gRPC

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