Heim  >  Artikel  >  Backend-Entwicklung  >  Ich möchte Protobuf aus der Proto-Datei von cmd generieren, ohne „option go_package“ zu verwenden.

Ich möchte Protobuf aus der Proto-Datei von cmd generieren, ohne „option go_package“ zu verwenden.

王林
王林nach vorne
2024-02-09 15:54:141058Durchsuche

我想从 cmd 的 proto 文件生成 protobuf,而不使用“option go_package ”

PHP-Editor Strawberry, Sie haben erwähnt, dass Sie Protobuf aus der cmd-Protodatei generieren möchten, ohne „option go_package“ zu verwenden. In diesem Fall können Sie versuchen, andere Methoden zum Generieren von Protobuf-Dateien zu verwenden. Es gibt Tools, die Ihnen dabei helfen können, z. B. die Verwendung von Plugins oder benutzerdefinierten Skripts zur automatischen Generierung von Protobuf-Dateien. Auf diese Weise können Sie die erforderlichen Protobuf-Dateien auf andere Weise generieren, ohne auf die Option „go_package“ angewiesen zu sein. Auf diese Weise können Sie flexibler auf Ihre Bedürfnisse eingehen.

Frageninhalt

Ich muss eine Protobuf-Datei aus einer Proto-Datei generieren, die eine andere Proto-Datei importiert. Eine weitere Voraussetzung ist, dass es per cmd generiert werden muss (indem nicht „option go_package“ in der Proto-Datei definiert wird).

Workaround

Angenommen, Sie haben 3 Dateien: foo.proto, poo.proto und zoo.proto. Die Datei foo.proto importiert Nachrichtenstrukturen aus poo.proto und zoo.proto. Sie müssen die Befehle in einer bestimmten Reihenfolge schreiben, indem Sie zuerst foo.proto (von anderen importieren) , dann poo.proto (von anderen importieren) und danach zoo .proto (von anderen importieren) einfügen.

Dies ist der Befehl zum Generieren von Protobuf, ohne die Option go_package

zu definieren
protoc --proto_path=./ --go_out=./pb --go-grpc_out=./pb
--go_opt=mfoo.proto=./ --go-grpc_opt=mfoo.proto=./
--go_opt=mpoo.proto=./ --go-grpc_opt=mpoo.proto=./
--go_opt=mzoo.proto=./ --go-grpc_opt=mzoo.proto=./
foo.proto goo.proto zoo.proto

Bitte beachten Sie das m vor dem Dateinamen, es ersetzt die Option go_package

im Code

foo.proto

syntax = "proto3";
import "goo.proto";
import "zoo.proto";

service foo {
    rpc foorpc(poomessage) returns (zoomessage) {}
}

poo.proto

syntax = "proto3";

message poomessage {
    string body = 1;
}

zoo.proto

syntax = "proto3";

message ZooMessage {
    string body = 1;
}

Das obige ist der detaillierte Inhalt vonIch möchte Protobuf aus der Proto-Datei von cmd generieren, ohne „option go_package“ zu verwenden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen