Je teste l'importation du fichier .proto depuis un autre répertoire.
$ GOPATH/src/A/A.proto
syntax = "proto3";
package A;
message SomeMsg {
string msg = 2;
int64 id = 3;
}
$ GOPATH/src/B/B.proto
syntax = "proto3";
package B; import "A/A.proto";
message Msg {
SomeMsg s = 1;
}
Je fais ça: dans le dossier A:
protoc A.proto --go_out=.
puis dans le dossier B:
protoc B.proto --go_out=. --proto_path=$GOPATH/
Mais j'obtiendrai cette erreur:
B.proto: le fichier ne réside dans aucun chemin spécifié à l'aide de --proto_path (ou -I). Vous devez spécifier un --proto_path qui englobe ce fichier. Notez que le proto_path doit être un préfixe exact des noms de fichiers .proto - protocole est trop stupide pour savoir quand deux chemins (par exemple absolu et relatif) sont équivalents (c'est plus difficile que vous ne le pensez).
L'erreur me semble assez claire, cela signifie que vous devez spécifier le répertoire exact dans lequel se trouve B.proto
protoc B.proto --go_out=. --proto_path=$GOPATH/src/B
ou si vous êtes déjà dans le dossier B,
protoc B.proto --go_out=.
Les gars du protocole sont drôles c'est plus difficile que vous ne le pensez !!! Lol, pourquoi suis-je contre le désir de dire "C'est ce qu'elle a dit!" Lol