qt_add_grpc
Génère des services C++ basés sur Qt en utilisant un schéma protobuf.
La commande est définie dans le composant Grpc du paquetage Qt6. Chargez le paquetage avec :
find_package(Qt6 REQUIRED COMPONENTS Grpc)
Cette commande a été introduite dans Qt 6.5.
Habituellement, qtgrpcgen est invoqué par le biais de la macro CMake qt_add_grpc.
Synopsis
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>]
)Note : Seule la génération de code CLIENT est actuellement supportée.
Si les commandes sans version sont désactivées, utilisez qt6_add_grpc() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.
Description de la commande
Les fichiers sources sont créés par qtgrpcgen et ajoutés à la cible. Si la cible existe déjà, les fichiers sont ajoutés à la liste des sources de la cible. Si la cible n'existe pas, elle est créée en tant que bibliothèque vers laquelle vous devez établir un lien.
La bibliothèque gRPC™ générée par la commande qt_add_grpc fait référence aux symboles protobuf utilisés dans les appels de service. Cela signifie que vous devez soit utiliser une cible commune dans les appels qt_add_protobuf et qt_add_grpc, soit lier la bibliothèque protobuf générée à celle de gRPC.
Compte tenu de ce qui précède, vous pouvez réutiliser la cible pour le code client protobuf et 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
)Si vous voulez avoir des cibles séparées, vous devez lier la cible du client gRPC à celle de 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)Arguments
PROTO_FILESspécifie la liste des fichiers .proto utilisés par la procédure de génération de code.PROTO_INCLUDESspécifie la liste des répertoires à rechercher pour les dépendances protobuf.Remarque : l'emplacement de
PROTO_FILESest implicitement considéré comme faisant partie du chemin d'inclusion de protobuf.QMLgénère l'API client QML pour le service gRPC. L'argument nécessite le composant 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_DIRECTORYdéfinit le répertoire dans lequel les fichiers générés seront placés. Par défaut, le répertoire de construction actuel est utilisé.GENERATE_PACKAGE_SUBFOLDERSutilise le nom du paquetage spécifié dans les fichiers.protopour créer la structure du dossier pour les fichiers générés. Par exemple, si le paquet est défini comme :package io.qt.testles fichiers générés seront placés dans OUTPUT_DIRECTORY/io/qt/test/.COPY_COMMENTScopie les commentaires des fichiers.protodans le code généré.EXPORT_MACROne s'applique que lors de la création d'une nouvelle bibliothèque partagée à partir de la <target>. Cette option spécifie le nom de base de la macro d'exportation utilisée dans le code généré. Le nom final de la macro est construit commeQPB_<EXPORT_MACRO>_EXPORT. Si cette option n'est pas définie, le nom de la cible est utilisé commeEXPORT_MACRO.Pour plus d'informations, lisez la section Création de bibliothèques partagées.
OUTPUT_HEADERSspécifie une variable qui stockera la liste des en-têtes générés. Cette liste peut être utile pour définir des règles d'installation de projet personnalisées.OUTPUT_TARGETSspécifie une variable qui stockera la liste des cibles générées. Cette liste peut être utile pour définir des règles d'installation de projets personnalisés.HEADER_GUARDspécifie le mécanisme utilisé pour protéger les fichiers d'en-tête générés contre l'inclusion multiple. Les valeurs possibles sontpragma,filename. La valeur par défaut estfilename. La définition de l'option àpragmagénère le mécanisme moderne de protection des fichiers d'en-tête pragma :#pragma once ...
L'omission de l'option ou la définition de l'option à
filenamegénère le mécanisme de protectionifdefet utilise le nom de fichier '.proto' comme infixe de protection :#ifdef MYMESSAGES_QPB_H #define MYMESSAGES_QPB_H ... #endif // MYMESSAGES_QPB_H
Sélectionnez le style de garde préféré en fonction de la structure de votre projet.
Voir aussi L'outil 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.