在 Go 中编译 google-fhir 原型文件时出错

Posted

技术标签:

【中文标题】在 Go 中编译 google-fhir 原型文件时出错【英文标题】:Errors compiling google-fhir proto files in Go 【发布时间】:2020-09-14 19:43:19 【问题描述】:

我无法为 go 编译 google 的 fhir proto

1。我能够生成带有可以解决的警告的 annotations.pb.go

protoc --proto_path=proto  --go_out=.  proto/annotations.proto
2020/05/27 12:42:17 WARNING: Missing 'go_package' option in "annotations.proto",
please specify it with the full Go package path as
a future release of protoc-gen-go will require this be specified.
See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

2。很遗憾,我无法解决有关找不到文件的问题。

包含以下导入的 profile_config.proto 示例

import "proto/annotations.proto";
import "proto/r4/core/codes.proto";
import "proto/r4/core/datatypes.proto";

尝试执行导致“未找到”

protoc --proto_path=proto  --go_out=.  proto/profile_config.proto
proto/annotations.proto: File not found.
proto/r4/core/codes.proto: File not found.
proto/r4/core/datatypes.proto: File not found.

也许这些 proto 文件只能与 java 一起使用,而任何其他语言都需要对文件进行修改。

【问题讨论】:

proto 的路径取决于你如何运行你的 proto 生成。如果可能需要在它前面加上,.。 proto 文件不依赖于语言,所以 java 不应该是问题 【参考方案1】:

关于 1.,您需要编辑每个要编译的 .proto 并添加 go_package 选项。例如:

option go_package = "github.com/my-org/my-proj/go/gen/fhir/proto"

关于2.,您设置--proto_path=proto,这导致protoc 搜索proto/annotations.proto 进入以下路径:

./proto/proto/annotations.proto

如果您不设置此选项或将其设置为--proto_path=.,您将能够编译。

我还建议看看this pull-request。

【讨论】:

以上是关于在 Go 中编译 google-fhir 原型文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

Go 编译的二进制文件不会在 Ubuntu 主机上的 alpine docker 容器中运行

go 语言中windows Linux 交叉编译

多文件程序编译时头文件的使用方法

当我们说Go语言的时候,我们在说些什么?

如何让go编译的程序后台运行

Golang - “go run main.go”和编译之间的区别