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>]
[HEADER_GUARD <pragma|filename>]
)注意: 現在、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_INCLUDESprotobufの依存関係を検索するディレクトリのリストを指定します。注:
PROTO_FILESの場所は、暗黙的に protobuf のインクルードパスの一部と見なされます。QMLはgRPC サービスの QML クライアント API を生成します。この引数にはGrpcQuickQt コンポーネントが必要です。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は、生成されたターゲットのリストを格納する変数を指定します。このリストはカスタムプロジェクトのインストールルールを定義するのに便利です。HEADER_GUARDは、生成されたヘッダーファイルが複数インクルードされないようにする ためのメカニズムを指定します。指定できる値はpragma、filenameです。デフォルトはfilenameです。このオプションをpragmaに設定すると、最新のプラグマ・ヘッダー・ガードが生成されます:#pragma once ...
このオプションを省略するか、オプションを
filenameに設定すると、ifdefラッピングガードが生成され、ガード接尾辞として '.proto' ファイル名を使用します:#ifdef MYMESSAGES_QPB_H #define MYMESSAGES_QPB_H ... #endif // MYMESSAGES_QPB_H
プロジェクトの構造に応じて、好みのガードスタイルを選択してください。
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.