このページでは

qtgrpcgen ツール

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

find_package(Qt6 COMPONENTS GrpcTools REQUIRED)

使用方法

Qt には、qtgrpcgen ツールの使用を容易にする CMake 関数が用意されています。ビルドツールとして CMake を使用する場合は、Qt CMake API を利用することをお勧めします。CMake 以外のビルドシステムを使用する場合は、「qtgrpcgen を手動で実行する」に記載されているコマンドを適宜調整してください。

注: qmake で xml-ph-0000@deepl.internal モジュールを使用して gRPC™Qt GRPC およびProtobufアプリケーションのビルドに対する明示的なサポートはありません。

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 Protobuf のコード生成を開始するには、qt_add_protobuf() CMake関数も呼び出す必要があります。

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

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>が指定されていない場合 、このオプションのデフォルトは以前の構文になります。

  • HEADER_GUARD 生成されたヘッダーファイルが複数回インクルードされるのを防ぐために使用されるメカニズムを指定します。指定可能な値は、pragma 、filename です。デフォルトはfilename です。このオプションをpragma に設定すると、最新のプラグマヘッダーガードが生成されます:
    #pragma once
    ...

    このオプションを省略するか、filename に設定すると、ifdef 形式のラップガードが生成され、ガードの接頭辞として '.proto' というファイル名が使用されます:

    #ifdef MYMESSAGES_QPB_H
    #define MYMESSAGES_QPB_H
    ...
    #endif // MYMESSAGES_QPB_H

    プロジェクトの構造に応じて、適切なガードスタイルを選択してください。

  • QML gRPC サービス用の QML クライアントの生成を有効にします。

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