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 プロジェクトに統合します。
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.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
を指定すると、gRPCサービス用のQMLクライアントを生成できるようになります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。