このページでは

qt_add_grpc

protobufスキーマを使用して、QtベースのC++サービスを生成します

このコマンドは、Qt6 パッケージの Grpc コンポーネントで定義されています。以下のコマンドでパッケージを読み込みます:

find_package(Qt6 REQUIRED COMPONENTS Grpc)

このコマンドは 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 によるコード生成のみが サポートされています。

バージョン指定なしのコマンドが無効になっている場合は、代わりに `qt6_add_grpc() ` を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

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 gRPC サービス用の QML クライアント API を生成します。この引数には、 という Qt コンポーネントが必要です。GrpcQuick
    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.testOUTPUT_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 ヘッダーガードが生成されます:
    #pragma once
    ...

    このオプションを省略するか、filename に設定すると、ifdef によるラップガードが生成され、ファイル名「.proto」がガードの接頭辞として使用されます:

    #ifdef MYMESSAGES_QPB_H
    #define MYMESSAGES_QPB_H
    ...
    #endif // MYMESSAGES_QPB_H

    プロジェクトの構造に応じて、適切なガードスタイルを選択してください。

「qtgrpcgen ツール」も参照してください 。

© 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.