Das Werkzeug qtprotobufgen
Das Tool qtprotobufgen
kann verwendet werden, um Qt Protobuf Klassen aus einem Protobuf-Schema zu generieren. Das Werkzeug wird vom CMake-Paket Qt6::ProtobufTools
bereitgestellt. Es arbeitet als eine Erweiterung des Google-Werkzeugs protoc
.
find_package(Qt6 COMPONENTS ProtobufTools REQUIRED)
Verwendung
Qt stellt CMake-Funktionen zur Verfügung, die die Verwendung des Tools qtprotobufgen
erleichtern. Wenn Sie CMake als Build-Tool verwenden, sollten Sie die Qt CMake API verwenden. Für andere Build-Systeme als CMake passen Sie die unter Manuelles Ausführen beschriebenen Befehle an.
Hinweis: Es gibt keine explizite Unterstützung für die Erstellung von gRPC™ und Protobuf-Anwendungen unter Verwendung des Qt GRPC Moduls mit qmake.
CMake
Die folgenden CMake-Befehle integrieren ein Protobuf-Schema in ein Qt-Projekt.
Erzeugt Qt-basierten C++-Quellcode unter Verwendung eines Protobuf-Schemas |
Normalerweise wird qtprotobufgen
über CMake mit dem Makro qt_add_protobuf
aufgerufen.
Verwendung von qt_add_protobuf
cmake_minimum_required(VERSION 3.16...3.22) project(MyThings) find_package(Qt6 REQUIRED COMPONENTS Protobuf) qt_standard_project_setup() qt_add_protobuf(MyMessages GENERATE_PACKAGE_SUBFOLDERS PROTO_FILES path/to/message.proto path/to/other_message.proto PROTO_INCLUDES /path/to/proto/include ) qt_add_executable(MyApp main.cpp) target_link_libraries(MyApp PRIVATE MyMessages)
Im obigen Beispiel erzeugen wir eine Bibliothek namens MyMessages
, die die Nachrichtentypen enthält, die in den Pfaden definiert sind, die der Option PROTO_FILES
übergeben wurden. Die Option GENERATE_PACKAGE_SUBFOLDERS
generiert eine Ordnerstruktur für die erzeugten Dateien. Und die Option PROTO_INCLUDES
weist protoc an, in den angegebenen Verzeichnissen nach Abhängigkeiten oder Importen zu suchen. Wir erstellen ein Ziel für eine ausführbare Datei namens MyApp
, die wir mit der Bibliothek MyMessages
verknüpfen.
Manuelle Ausführung
protoc --plugin=protoc-gen-qtprotobuf=<path/to/bin/>qtprotobufgen \ --qtprotobuf_out="[<options>:]<output_dir>" \ [--qtprotobuf_opt="<options>"] \ [-I/extra/proto/include/path] \ <protofile>.proto
Das Argument options
ist eine durch Semikolon getrennte Liste von Optionen. Sie kann auf zwei verschiedene Arten übergeben werden. Entweder durch Voranstellen der Optionen an das Argument output_dir, begrenzt durch einen Doppelpunkt. Oder durch ein separates Argument, --qtprotobuf_opt
. Sie können die entsprechenden Schlüssel auch als Umgebungsvariable QT_PROTOBUF_OPTIONS
übergeben. Die Schlüssel müssen als eine durch Semikolon getrennte Liste angegeben werden:
export QT_PROTOBUF_OPTIONS="COPY_COMMENTS;GENERATE_PACKAGE_SUBFOLDERS"
Optionen
Der Generator unterstützt Optionen, die zur Abstimmung der Generierung angegeben werden können. Optionen haben direkte Aliase in der Funktion qt_add_protobuf. Die folgenden Optionen werden unterstützt:
COPY_COMMENTS
kopiert Kommentare aus den.proto
Dateien in den generierten Code.GENERATE_PACKAGE_SUBFOLDERS
verwendet den Paketnamen aus den.proto
Dateien, um die Ordnerstruktur für die generierten Dateien zu erstellen. Zum Beispiel, wenn das Paket definiert ist als:package io.qt.test
werden die generierten Dateien in OUTPUT_DIRECTORY/io/qt/test/ abgelegt.EXPORT_MACRO
definiert den Basisnamen für das im generierten Code verwendete Exportmakro. Der endgültige Makroname wird wieQPB_<EXPORT_MACRO>_EXPORT
aufgebaut. Wenn diese Option nicht gesetzt ist, wird kein Exportmakro erzeugt.Seit Qt 6.8 wird das folgende Format unterstützt:
EXPORT_MACRO=macro_name[:macro_output_file[:<true|false>]]
. Dieses Format erlaubt es Ihnen, den Namen der Header-Datei anzugeben, die das Exportmakro enthält, und explizit zu steuern, ob es generiert wird.Hinweis: Wenn <macro_output_file> nicht angegeben wird, wird die Option auf die vorherige Syntax zurückgesetzt.
© 2025 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.