Компилятор protobuf не видит descriptor.proto
у меня есть такой proto файл:
syntax = "proto3";
option go_package = "./;newtype";
package my.types;
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions{
optional string my_size = 50001;
}
message Block{
bytes arr = 1 [(my_size) = "3"];
}
Путь к файлу:
/${PATH}/proto/newtype/block.proto
Я компилирую данный файл командой:
protoc --proto_path=/${PATH}/proto/newtype --go_out=. block.proto
И получаю ошибку:
PCName newtype % ls -al
total 8
drwxr-xr-x 3 Username staff 96 6 окт 10:04 .drwxr-xr-x 5 Username staff 160 30 сен 12:10 ..
-rw-r--r-- 1 Username staff 1527 6 окт 10:04 block.proto
PCName newtype % protoc --proto_path=/{$PATH}/proto/newtype -I$(go env GOPATH)/pkg --go_out=. block.proto
google/protobuf/descriptor.proto: File not found. block.proto:7:1: Import "google/protobuf/descriptor.proto" was not found or had errors. block.proto:9:8: "google.protobuf.FieldOptions" is not defined.
block.proto: "google.protobuf.FieldOptions" is not defined.
Как указать компилятору protobuf где ему искать файл descriptor.proto?
Ответы (1 шт):
protobuf те еще танцы с бубнами, тоже были проблемы с ним решал я их так:
это мой Maikefile
install-protobuf-compiler-for-linux:
sudo apt install -y protobuf-compiler
protoc --version
make get-protobuf-dependencies
proto-version ?= v1.3.2
get-protobuf-dependencies:
go get github.com/golang/protobuf/[email protected]
go get github.com/gogo/protobuf/proto@$(proto-version)
go get github.com/gogo/protobuf/protoc-gen-gogo@$(proto-version)
go get github.com/gogo/protobuf/gogoproto@$(proto-version)
go get github.com/gogo/protobuf/protoc-gen-gofast@$(proto-version)
go get github.com/gogo/protobuf/protoc-gen-gogofast@$(proto-version)
go get github.com/gogo/protobuf/protoc-gen-gogofaster@$(proto-version)
cp-protobuf-package:
# костыль
mkdir -p $(GOPATH)/src/github.com/gogo/
cp -r $(GOPATH)/pkg/mod/github.com/gogo/protobuf@$(proto-version) $(GOPATH)/src/github.com/gogo/protobuf
clear:
find ./ -name *.gen.go -delete
find ./ -name *pb.go -delete
find ./ -name prog.go -delete
find ./ -name *gen.go.tmp -delete
generate-proto:
go generate ./protobuf
generate: clear generate-proto
go generate ./...
выполняю по очереди
сами протобаф файлы храню в 1 месте + держу go файл где прописаны команды для генерации каждого файла в том порядке, в котором для меня удобно.
так выглядит сам файл где прописаны команды для генерации, посмотрите может быть вам что-то поможет

