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プロジェクトに組み込むことができます。
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>.protooptions 引数は、セミコロンで区切られたオプションのリストです。これは、--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プロジェクトの構造に応じて、適切なガードスタイルを選択してください。
QMLgRPC サービス用の 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.