首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >makefile中的protoc用于构建protobuf

makefile中的protoc用于构建protobuf
EN

Stack Overflow用户
提问于 2018-03-03 22:46:05
回答 1查看 2.7K关注 0票数 3

我已经安装了一个类似于https://github.com/google/protobuf/blob/master/src/README.md上的教程的协议缓冲区

之后,我想用下面的命令构建protobuf并安装go库:

代码语言:javascript
复制
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
go get -u github.com/golang/protobuf/protoc-gen-go
make # generate app and protobuf

我在根目录下有这样的文件Makefile

代码语言:javascript
复制
get:
    echo "Build Proto"
    protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis proto/item.proto --go_out=plugins=grpc:.
    protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis proto/item.proto --grpc-gateway_out=logtostderr=true:.
    protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis proto/item.proto --swagger_out=logtostderr=true:.
    echo "Build APP"
    CGO_ENABLED=0 GOOS=linux go build -o ./server/storeitemservice ./server/cmd/server/main.go

但是我想用命令make在我的应用程序根目录中生成app和protobuf来构建我的应用程序,结果如下:

代码语言:javascript
复制
echo "Build Proto"
Build Proto
protoc -I/usr/local/include -I. -IOPATH/src -IOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis proto/item.proto --go_out=plugins=grpc:.
OPATH/src: warning: directory does not exist.
OPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis: warning: directory does not exist.
google/api/annotations.proto: File not found.
proto/item.proto: Import "google/api/annotations.proto" was not found or had errors.
Makefile:2: recipe for target 'get' failed
make: *** [get] Error 1

在看到这样的问题后,我检查了它的每个目录,结果是所有目录都在那里。

EN

回答 1

Stack Overflow用户

发布于 2018-03-04 00:20:09

你需要这样包装你的$GOPATH

代码语言:javascript
复制
protoc -I/usr/local/include -I. -I$(GOPATH)/src \
       -I$(GOPATH)/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
       proto/item.proto --go_out=plugins=grpc:.

\在这里添加了更容易阅读的内容。关键是$(GOPATH)$GOPATH

这是一个演示:

代码语言:javascript
复制
get:
    echo $(GOPATH)
    echo $GOPATH

和输出

代码语言:javascript
复制
echo /Users/sberry/Development/golang
/Users/sberry/Development/golang
echo OPATH
OPATH

在了解Makefile语法的编辑器中,您可以看到不同之处

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49085355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档