2013-06-15 3 views
3

Google 프로토콜 버퍼에서 사용자 정의 필드 옵션을 정의하려고합니다. 나는 그런 파일을 작성하는 경우, 모든 작품을 좋아 :가져온 .proto 파일에서 protobuf.FieldOptions 확장

import "google/protobuf/descriptor.proto"; 

package tutorial; 

extend google.protobuf.FieldOptions { 
    optional int32 myopt = 70000; 
} 

message Persona { 
    required string name = 1 [(myopt)=5]; 
} 

을하지만, 내가 다른 파일에 "myopt"정의를 이동하려고하면 컴파일이 실패

myext.proto :

package myext; 

import "google/protobuf/descriptor.proto"; 

extend google.protobuf.FieldOptions { 
    optional int32 myopt = 70000; 
} 

addressbook.proto :

import "google/protobuf/descriptor.proto"; 
import "myext.proto"; 

package tutorial; 


message Persona { 
    required string name = 1 [(myopt)=5]; 
} 

편집 :

$ protoc --cpp_out=. -I/usr/include -I. addressbook.proto 
addressbook.proto:8:29: Option "(myopt)" unknown. 

를 사용하는 이외의 다른 파일에 사용자 정의 필드 옵션을 정의 할 수있는 방법이 있습니까? 몇 가지 .proto 파일에서 내 옵션을 사용하려면 공통 부분을 공통 파일로 이동하는 것이 중요합니다.

+3

(자바처럼) 상주 할 디렉토리 "(myext.myopt)"을 나타냅니다 대신 "(myopt)"모든 것이 괜찮습니다. – peper0

답변

2

당신은 당신이 myext하위 디렉토리에있는 myext.proto와

import "myext/myext.proto"; 

을 일을해야 패키지 myext에게

을 가지고 있기 때문에. 프로토콜 버퍼 패키지에서

파일 내가 사용하는 경우

+1

문제가 해결되지 않습니다. 그러나, 당신은 나에게 "패키지"가 여기에 어떤 영향을 미쳤다는 힌트를 주었고, 진정한 해결로 이어진다. – peper0

+0

이 대답은 잘못되었습니다. '.proto' 파일에 선언 된 패키지 이름은 디렉토리 구조와 관련이 없습니다. 그들은 일반적으로 일치하지만 이는 관례에 의한 것일뿐 요구 사항은 아닙니다. –

관련 문제