Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Saya mahu menjana protobuf daripada fail proto cmd tanpa menggunakan "option go_package"

Saya mahu menjana protobuf daripada fail proto cmd tanpa menggunakan "option go_package"

王林
王林ke hadapan
2024-02-09 15:54:141058semak imbas

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

PHP Editor Strawberry, anda menyebut bahawa anda ingin menjana protobuf daripada fail proto cmd tanpa menggunakan "option go_package". Dalam kes ini, anda boleh cuba menggunakan kaedah lain untuk menjana fail protobuf. Terdapat alatan yang boleh membantu anda mencapai matlamat ini, seperti menggunakan pemalam atau skrip tersuai untuk menjana fail protobuf secara automatik. Dengan cara ini anda boleh menjana fail protobuf yang diperlukan dengan cara lain tanpa bergantung pada pilihan "go_package". Dengan cara ini anda boleh menjadi lebih fleksibel dengan keperluan anda.

Kandungan soalan

Saya perlu menjana fail protobuf daripada fail proto yang mengimport fail proto lain. Keperluan lain ialah ia mesti dijana oleh cmd (dengan tidak mentakrifkan "option go_package" dalam fail proto).

Penyelesaian

Andaikan anda mempunyai 3 fail foo.proto, poo.proto dan zoo.proto. Fail foo.proto mengimport struktur mesej daripada poo.proto dan zoo.proto. Anda perlu menulis arahan dalam susunan tertentu, meletakkan foo.proto (import dari yang lain) dahulu, kemudian poo.proto (import dari yang lain) dan zoo .proto (import dari yang lain) selepas.

Ini adalah arahan untuk menjana protobuf tanpa menentukan pilihan 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

Sila ambil perhatian m sebelum nama fail, ia akan menggantikan pilihan go_package

dalam kod

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

Atas ialah kandungan terperinci Saya mahu menjana protobuf daripada fail proto cmd tanpa menggunakan "option go_package". Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam