qt_add_grpc
Genera servicios C++ basados en Qt utilizando un esquema protobuf.
El comando está definido en el componente Grpc del paquete Qt6. Cargue el paquete con:
find_package(Qt6 REQUIRED COMPONENTS Grpc)
Este comando se introdujo en Qt 6.5.
Normalmente qtgrpcgen se invoca a través de la macro qt_add_grpc CMake.
Sinopsis
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>]
)Nota: Actualmente sólo se soporta la generación de código CLIENT.
Si los comandos sin versión están desactivados, utilice qt6_add_grpc() en su lugar. Admite el mismo conjunto de argumentos que este comando.
Descripción
qtgrpcgen crea los archivos de origen y los añade al destino. Si el destino ya existe, los archivos se añaden a la lista de fuentes del destino. Si el destino no existe, se crea como una biblioteca a la que debe enlazar.
La biblioteca gRPC™ que se genera utilizando el comando qt_add_grpc hace referencia a los símbolos protobuf que se utilizan en las llamadas de servicio. Esto significa que debe utilizar un objetivo común en las llamadas qt_add_protobuf y qt_add_grpc o enlazar la biblioteca protobuf generada con la de gRPC.
Teniendo en cuenta la declaración anterior puede reutilizar el objetivo tanto para protobuf y gRPC código de cliente:
# 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
)Si quieres tener objetivos separados entonces necesitas enlazar el objetivo del cliente gRPC con el del 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)Argumentos
PROTO_FILESespecifica la lista de archivos .proto utilizados por el procedimiento de generación de código.PROTO_INCLUDESespecifica la lista de directorios en los que buscar dependencias de protobuf.Nota: La ubicación de
PROTO_FILESse considera implícitamente parte de la ruta de inclusión del protobuf.QMLgenera la API de cliente QML para el servicio gRPC. El argumento requiere el componente QtGrpcQuick.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_DIRECTORYdefine el directorio donde se colocarán los archivos generados. Por defecto, se utiliza el directorio de construcción actual.GENERATE_PACKAGE_SUBFOLDERSutiliza el especificador de nombre de paquete de los archivos.protopara crear la estructura de carpetas de los archivos generados. Por ejemplo, si el paquete se define como:package io.qt.testlos archivos generados se colocarán en OUTPUT_DIRECTORY/io/qt/test/.COPY_COMMENTScopia los comentarios de los archivos.protoen el código generado.EXPORT_MACROsólo se aplica al crear una nueva biblioteca compartida a partir del <target>. Esta opción especifica el nombre base para la macro de exportación utilizada en el código generado. El nombre final de la macro se construye comoQPB_<EXPORT_MACRO>_EXPORT. Si no se establece esta opción, el nombre de destino se utiliza comoEXPORT_MACRO.Lea Creación de bibliotecas compartidas para obtener más información en profundidad.
OUTPUT_HEADERSespecifica una variable que almacenará la lista de cabeceras generadas. Esta lista puede ser útil para definir reglas personalizadas de instalación del proyecto.OUTPUT_TARGETSespecifica una variable que almacenará la lista de objetivos generados. Esta lista puede ser útil para definir reglas de instalación personalizadas.HEADER_GUARDespecifica el mecanismo utilizado para proteger los archivos de cabecera generados de la inclusión múltiple. Los valores posibles sonpragma,filename. Por defecto esfilename. Establecer la opción apragmagenera el moderno pragma header guard:#pragma once ...
Omitir la opción o establecerla en
filenamegenera la protección de envolturaifdefy utiliza el nombre de archivo '.proto' como infijo de protección:#ifdef MYMESSAGES_QPB_H #define MYMESSAGES_QPB_H ... #endif // MYMESSAGES_QPB_H
Seleccione el estilo de guardia preferido según la estructura de su proyecto.
Véase también La herramienta 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.