qt_add_grpc
Génère des services C++ basés sur Qt à partir d'un schéma protobuf
Cette commande est définie dans le composant Grpc du paquet Qt6. Chargez le paquet à l'aide de la commande suivante :
find_package(Qt6 REQUIRED COMPONENTS Grpc)Cette commande a été introduite dans Qt 6.5.
En général, la fonction ` qtgrpcgen ` est appelée via la macro CMake ` qt_add_grpc `.
Syntaxe
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>]
)Remarque : seule la génération de code « CLIENT » est actuellement prise en charge.
Si les commandes sans version sont désactivées, utilisez plutôt ` qt6_add_grpc() `. Elle prend en charge le même ensemble d'arguments que cette commande.
Description
Les fichiers source 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 sous forme de bibliothèque à laquelle vous devez lier votre programme.
La gRPC™ bibliothèque générée à l’aide de 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 pour 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 même cible pour le code client protobuf et celui d’ 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 souhaitez disposer de cibles distinctes, vous devez lier la cible 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 à parcourir pour rechercher les dépendances protobuf.Remarque : l'emplacement du fichier `
PROTO_FILES` est implicitement considéré comme faisant partie du chemin d'inclusion protobuf.QMLgénère l’API client QML pour le service « gRPC ». Cet argument nécessite le composant 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_DIRECTORYDéfinit le répertoire dans lequel les fichiers générés seront placés. Par défaut, le répertoire de compilation actuel est utilisé.GENERATE_PACKAGE_SUBFOLDERSutilise le spécificateur de nom de paquet issu des fichiers.protopour créer la structure de dossiers des fichiers générés. Par exemple, si le paquet est défini comme suit :package io.qt.test, les fichiers générés seront placés dans OUTPUT_DIRECTORY/io/qt/test/.COPY_COMMENTScopie les commentaires des fichiers `.proto` dans le code généré.EXPORT_MACROS'applique uniquement lors de la création d'une nouvelle bibliothèque partagée à partir de <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 sous la formeQPB_<EXPORT_MACRO>_EXPORT. Si cette option n'est pas définie, le nom de la cible est utilisé sous la formeEXPORT_MACRO.Consultez la section Création de bibliothèques partagées pour plus d’informations détaillé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 personnalisées pour le projet.HEADER_GUARDspécifie le mécanisme utilisé pour empêcher l’inclusion multiple des fichiers d’en-tête générés. Les valeurs possibles sontpragmaetfilename. La valeur par défaut estfilename. Définir cette option surpragmagénère la protection d’en-tête pragma moderne :#pragma once ...Si l’option est omise ou définie sur
filename, la protection d’encapsulationifdefest générée, et le nom de fichier « .proto » est utilisé comme infixe de protection :#ifdef MYMESSAGES_QPB_H #define MYMESSAGES_QPB_H ... #endif // MYMESSAGES_QPB_HChoisissez le style de garde qui convient le mieux à 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.