๊ธ€ ์ž‘์„ฑ์ž: ๋˜ฅํด๋ฒ .
๋ฐ˜์‘ํ˜•
|
|--parent.proto
|
|--sub
    |--child.proto

์œ„์™€ ๊ฐ™์ด ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ณ  child.proto์—์„œ ์ž์‹ ์˜ ์ƒ์œ„ ํด๋”์— ์œ„์น˜ํ•œ parent.proto๋ฅผ import ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค.

 

 

๋ฌธ์ œ ๋˜๋Š” ๊ฒฝ์šฐ


parent.proto

syntax = "proto3";

package parent;

message Attribute {
  ---
}

 

child.proto

syntax = "proto3";

package child;

import "../parent.proto";

message Child {
	parent.Attribute attribute = 1;
}

 

(ํ˜„์žฌ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์œ„์น˜๊ฐ€ parent.proto๊ฐ€ ์žˆ๋Š” ํด๋”๋ผ ๊ฐ€์ • ํ•  ๋•Œ)
protoc -I=.\ .\parent.proto --cpp_out=".\"
protoc -I=.\sub .\sub\child.proto --cpp_out=".\"

 

์ƒ์‹์ ์œผ๋กœ import๋ฅผ ํ•  ๋•Œ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์จ์ฃผ๋“ฏ์ด "../parent.proto"๋ฅผ ์จ์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

 

๊ทธ๋ ‡๊ธฐ์—, child.proto์—์„œ parent.proto๊ฐ€ ์–ด๋””์— ์œ„์น˜ํ•ด์žˆ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค.

 

 

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•


parent.proto

syntax = "proto3";

package parent;

message Attribute {
  ---
}

 

child.proto

syntax = "proto3";

package child;

import "parent.proto";

message Child {
	parent.Attribute attribute = 1;
}

 

(ํ˜„์žฌ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์œ„์น˜๊ฐ€ parent.proto๊ฐ€ ์žˆ๋Š” ํด๋”๋ผ ๊ฐ€์ • ํ•  ๋•Œ)
protoc -I=.\ .\parent.proto --cpp_out=".\"
protoc -I=.\sub -I=.\ .\sub\child.proto --cpp_out=".\"

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. child.proto์—์„œ import๋Š” ๊ฒฝ๋กœ์— ์ƒ๊ด€์—†์ด ํŒŒ์ผ ์ด๋ฆ„๋งŒ ์จ์ฃผ๊ณ  ํ”„๋กœํ†  ํŒŒ์ผ์„ ์ œ๋„ˆ๋ ˆ์ดํŠธ ํ•˜๋Š” ๋ช…๋ น์–ด์—์„œ -I ์˜ต์…˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฃผ๋ฉด ๋œ๋‹ค. ๋‹จ, ์ˆœ์„œ์— ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

-I=์ž์‹ ์˜ ํด๋”(child.proto) -I=import์‹œํ‚ฌ ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”(parent.proto)
๋ฐ˜์‘ํ˜•