2017-01-22 72 views
1

我在proto3之上构建元模型原型。由于go proto3扩展语法具有可笑的表现力,因此要生成特定于域的样板文件。我的域的原始文件取决于包含扩展名的meta.protoproto3 - >使用自定义扩展导致在代码中输入包(“google/protobuf”)

我可以编译这些去。当包括meta.proto文件生成的旅途结束了以下包含块:

import proto "github.com/golang/protobuf/proto" 
import fmt "fmt" 
import math "math" 
import google_protobuf "google/protobuf" <--- this import does not exist !! 

我的扩展文件具有以下结构(based off this):

syntax = "proto2"; 
package "..."; 

option go_package = "..."; 

import "google/protobuf/descriptor.proto"; <--- this causes the import 

// message MyExtensionClass ... 
// message MyExtensionField ... 

extend google.protobuf.MessageOptions { 
    optional MyExtensionClass class = 50000; 
} 

extend google.protobuf.FieldOptions { 
    optional MyExtensionField field = 50001; 
} 

我知道解决的办法可能很简单,包括google/protobuf是为C++生成的。


在我的工作区包含的包应该是"github.com/golang/protobuf/protoc-gen-go/descriptor"

+0

的'descriptor.proto'进口申报自定义选项时,是必要的 - 它不仅适用于C++代码生成。虽然我对Go没有任何了解。 –

回答

1

可怜的芒解决方案。不理想,将其引导到相关的走导入的工作原理:

sed -i '' -e 's/import google_protobuf \"google\/protobuf\"/import google_protobuf \"github.com\/golang\/protobuf\/protoc-gen-go\/descriptor\"/g' pkg/domain/proto/extensions/*.pb.go