Maison  >  Article  >  développement back-end  >  Je souhaite générer du protobuf à partir du fichier proto de cmd sans utiliser "l'option go_package"

Je souhaite générer du protobuf à partir du fichier proto de cmd sans utiliser "l'option go_package"

王林
王林avant
2024-02-09 15:54:141058parcourir

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

Éditeur PHP Strawberry, vous avez mentionné que vous souhaitiez générer du protobuf à partir du fichier proto cmd sans utiliser "l'option go_package". Dans ce cas, vous pouvez essayer d'utiliser d'autres méthodes pour générer des fichiers protobuf. Il existe des outils qui peuvent vous aider à y parvenir, comme l'utilisation de plugins ou de scripts personnalisés pour générer automatiquement des fichiers protobuf. De cette façon, vous pouvez générer les fichiers protobuf requis par d'autres moyens sans compter sur l'option "go_package". De cette façon, vous pouvez être plus flexible avec vos besoins.

Contenu de la question

Je dois générer un fichier protobuf à partir d'un fichier proto qui importe un autre fichier proto. Une autre exigence est qu'il doit être généré par cmd (en ne définissant pas "l'option go_package" dans le fichier proto).

Solution de contournement

Supposons que vous ayez 3 fichiers foo.proto, poo.proto et zoo.proto. Le fichier foo.proto importe les structures de messages de poo.proto et zoo.proto. Vous devez écrire les commandes dans un ordre spécifique, en mettant d'abord foo.proto (importer depuis un autre) , puis poo.proto (importer depuis un autre) et zoo .proto (importer depuis un autre) après.

C'est la commande pour générer protobuf sans définir l'option go_package

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

Veuillez noter le m avant le nom du fichier, il remplacera l'option go_package

dans le 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;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer