Я прототипирую мета-модель поверх прото3. Чтобы сгенерировать доменную спецификацию, поскольку синтаксис расширения go proto3 является смехотворно выразительным. Мои протонные файлы домена зависят от meta.proto
, которые содержат расширения.proto3 -> идти с пользовательскими расширениями, приводящими к импорту в пакет («google/protobuf») в коде go
Я могу скомпилировать их. При включении файла 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
include предназначен для генерации C++.
В моем рабочем пространстве включенный пакет должен быть "github.com/golang/protobuf/protoc-gen-go/descriptor"
Импорт 'descriptor.proto' необходим при объявлении пользовательских опций - это не только для генерации кода на C++. Однако я ничего не знаю о Go. –