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 プロジェクトに統合します。
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.test
OUTPUT_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.