qt_add_grpc

使用protobuf模式生成基于Qt的C++服务

注意:此命令处于技术预览阶段,未来的发行版本中可能会有所变化。

此命令自Qt 6.5版本引入。

通常,通过CMake宏qt_add_grpc来调用qtgrpcgen

qt_add_grpc(<target> <TARGET_TYPE>
    PROTO_FILES <file> ...
    [COPY_COMMENTS]
    [GENERATE_PACKAGE_SUBFOLDERS]
    [QML]
    [EXTRA_NAMESPACE <namespace>]
    [EXPORT_MACRO <infix>]
    [PROTO_INCLUDES <path> ...]
    [OUTPUT_DIRECTORY <dir>]
    [OUTPUT_HEADERS <var>]
    [OUTPUT_TARGETS <var>]
)

qtgrpcgen将创建源文件并将其添加到目标。如果目标已存在,文件将被添加到目标源列表中。如果目标不存在,则将其创建为一个库,您必须将其链接。

使用qt_add_grpc命令生成的gRPC库引用了在服务调用中使用的protobuf符号。这意味着您要么需要在qt_add_protobufqt_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)

参数

  • TARGET_TYPE是要生成的gRPC代码的类型。由于gRPC支持客户端-服务器架构,可能生成CLIENTSERVER源代码。

    注意:Qt 6.5仅支持生成CLIENT源代码。

  • QML启用生成QmlClient。该类是从基本CLIENT类继承的,但它通过QML_ELEMENT宏、QML属性和Q_INVOKABLE方法进行了扩展。生成结果的示例如下:将QmlClient类添加到QML模块中。
    qt_add_protobuf(targetname
        QML
        ...
    )
    qt_add_grpc(targetname
        QML
        ...
    )

    注意:Qt 6.7仅支持生成QmlClient源代码。

  • COPY_COMMENTS将注释从.proto文件中复制过来。如果提供在参数列表中,与消息和字段相关的注释将复制到生成的头文件中。
  • GENERATE_PACKAGE_SUBFOLDERS为生成的文件生成一个与.proto文件包名相匹配的文件夹结构。例如,package io.qt.test;将生成的文件放在io/qt/test/
  • EXTRA_NAMESPACE是一个可选的命名空间,将用于生成的类。类始终在与.proto文件中指定的包名相同的命名空间中生成。如果使用此选项,则一切都将嵌套在额外的命名空间内。
  • EXPORT_MACRO是将用于生成代码的符号导出宏的基本名称。生成的宏名称构造为QPB_<EXPORT_MACRO>_EXPORT。如果不设置此选项,则不会生成宏。
  • PROTO_FILES 是要在生成过程中使用的 .proto 文件列表。
  • PROTO_INCLUDES 是将搜索依赖项的目录列表。
  • OUTPUT_DIRECTORY 是放置生成的文件的目录。默认情况下,评估函数时的当前目录被使用。
  • OUTPUT_HEADERS 可以用来指定一个变量,该变量将包含函数创建的头文件列表。这张列表对于自定义项目的安装规则可能很有用。
  • OUTPUT_TARGETS 可以用来指定一个变量,该变量将包含函数创建的目标列表。这张列表对于自定义项目的安装规则可能很有用。

另请参阅 Qtgrpcgen 工具.

© 2024 Qt 公司有限公司。本报告中包含的文档贡献的所有权属于其各自的版权所有人。本报告提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证 version 1.3 的条款授予的。Qt及其相应标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。