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_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)
参数
TARGET_TYPE
是要生成的gRPC代码的类型。由于gRPC支持客户端-服务器架构,可能生成CLIENT
或SERVER
源代码。注意: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 公司的商标。所有其他商标均为其各自所有者的财产。