qt_add_grpc
Protobuf スキーマを使用して Qt ベースの C++ サービスを生成します。
注: このコマンドはテクノロジープレビューであり、将来のリリースで変更される可能性があります。
このコマンドは Qt 6.5 で導入されました。
通常、qtgrpcgen
はqt_add_grpc
CMake マクロを通して呼び出されます。
qt_add_grpc(<target> <CLIENT|SERVER> PROTO_FILES <file> ... [PROTO_INCLUDES <path> ...] [QML] [OUTPUT_DIRECTORY <dir>] [GENERATE_PACKAGE_SUBFOLDERS] [COPY_COMMENTS] [EXPORT_MACRO <infix>] [OUTPUT_HEADERS <var>] [OUTPUT_TARGETS <var>] )
注: 現在、CLIENT
コード生成のみがサポートされています。
ソース・ファイルはqtgrpcgen
によって作成され、ターゲットに追加されます。ターゲットがすでに存在する場合、ファイルはターゲット・ソース・リストに追加されます。ターゲットが存在しない場合は、ライブラリとして作成され、リンクする必要があります。
リンク先の gRPC™qt_add_grpc
コマンドを使用して生成されるライブラリは、サービス・コールで使用されるprotobufシンボルを参照します。つまり、qt_add_protobufと qt_add_grpcの両方の呼び出しで共通のターゲットを使用するか、生成されたprotobufライブラリをgRPC 。
上記の記述を考慮すると、protobufとgRPC クライアントコードの両方でターゲットを再利用することができます:
# Generate the protobuf types first qt_add_protobuf(test_service_client PROTO_FILES test_service.protobuf ) ... # Reuse the protobuf target and extend it with \gRPC client # functionality qt_add_grpc(test_service_client CLIENT PROTO_FILES test_service.protobuf )
ターゲットを別々にしたい場合は、gRPC クライアントターゲットを protobuf ターゲットにリンクする必要があります:
# Generate the protobuf types first qt_add_protobuf(test_service_protobuf PROTO_FILES test_service.protobuf ) ... # Add separate target with the generated code of the \gRPC client. qt_add_grpc(test_service_client CLIENT PROTO_FILES test_service.protobuf ) target_link_libraries(test_service_client PRIVATE test_service_protobuf)
引数
PROTO_FILES
は、コード生成手順で使用される.protoファイルのリストを指定します。PROTO_INCLUDES
protobufの依存関係を検索するディレクトリのリストを指定します。注:
PROTO_FILES
の場所は、暗黙的に protobuf インクルードパスの一部と見なされます。QML
は サービスの QML クライアント API を生成します。この引数には Qt コンポーネントが必要です。gRPCGrpcQuick
find_package(Qt6 6.8 REQUIRED COMPONENTS Quick Protobuf ProtobufQuick Grpc GrpcQuick) ... # Generate the protobuf types qt_add_protobuf(test_service_client PROTO_FILES test_service.protobuf QML ) ... # Generate \gRPC client functionality qt_add_grpc(test_service_client CLIENT PROTO_FILES test_service.protobuf QML )
OUTPUT_DIRECTORY
生成されたファイルを置くディレクトリを定義します。デフォルトでは、現在のビルドディレクトリが使用されます。GENERATE_PACKAGE_SUBFOLDERS
は、 ファイルのパッケージ名指定子を使用して、生成されるファイルのフォルダ構造を作成します。たとえば、パッケージがと定義されている場合、生成されたファイルは.proto
package io.qt.test
OUTPUT_DIRECTORY/io/qt/test/ に置かれます。COPY_COMMENTS
.proto
ファイルのコメントを生成コードにコピーします。EXPORT_MACRO
<target> から新しい共有ライブラリを作成する場合にのみ適用されます。このオプションは、生成されるコードで使用されるエクスポート・マクロのベース名を指定します。最終的なマクロ名は のように構成されます。このオプションが設定されていない場合、ターゲット名は として使用されます。QPB_<EXPORT_MACRO>_EXPORT
EXPORT_MACRO
さらに詳しい情報については、共有ライブラリの作成をお読みください。
OUTPUT_HEADERS
は、生成されたヘッダーのリストを格納する変数を指定します。このリストは、カスタム・プロジェクトのインストール・ルールを定義するのに便利です。OUTPUT_TARGETS
は、生成されたターゲットのリストを格納する変数を指定します。このリストは、カスタム・プロジェクトのインストール・ルールを定義するのに便利です。
qtgrpcgen ツール」も参照してください 。
© 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.