docs: explain --go_out and --go-grpc_out in combination with go_package in Section 4.3
This commit is contained in:
+10
-2
@@ -166,13 +166,21 @@ gRPC 개발 환경을 구축하기 위해 설치하는 세 가지 프로그램
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 4.3 실제로 번역하기 (컴파일 명령어)
|
### 4.3 실제로 번역하기 (컴파일 명령어)
|
||||||
아래 명령어는 컴퓨터에게 **"내가 작성한 `protoapi.proto` 약속 장부를 Go 언어로 번역해서 현재 실습 디렉터리 내부의 `protoapi/` 폴더에 가지런히 넣어줘!"** 하고 지시하는 마법의 명령어입니다:
|
아래 명령어는 컴퓨터에게 작성한 명세 문서를 바탕으로 실제 Go 컴파일 결과 코드를 얻어내기 위해 기동하는 명령어입니다:
|
||||||
```bash
|
```bash
|
||||||
# 실습 디렉터리로 이동한 후 컴파일 실행
|
# 실습 디렉터리로 이동한 후 컴파일 실행
|
||||||
cd examples/grpcentity
|
cd examples/grpcentity
|
||||||
protoc --go_out=. --go-grpc_out=. protoapi.proto
|
protoc --go_out=. --go-grpc_out=. protoapi.proto
|
||||||
```
|
```
|
||||||
명령을 실행하고 나면 해당 폴더 내의 `protoapi/` 폴더 하위에 다음 두 파일이 기분 좋게 생성됩니다:
|
|
||||||
|
#### 컴파일 옵션 세부 작동 원리
|
||||||
|
컴파일 시 사용하는 옵션들은 각 결과물 파일이 생성될 **개별 기준 디렉터리(Base Directory)**를 선언하는 지시자입니다:
|
||||||
|
* **`--go_out=.`**: 데이터 규격(Message) 번역본인 `protoapi.pb.go` 파일이 출력될 기준 위치를 현재 명령을 실행 중인 경로(`.`)로 지정합니다.
|
||||||
|
* **`--go-grpc_out=.`**: 네트워크 원격 함수(Service) 번역본인 `protoapi_grpc.pb.go` 파일이 출력될 기준 위치를 현재 실행 경로(`.`)로 지정합니다.
|
||||||
|
|
||||||
|
**🚨 Go 패키지 옵션과의 상호 결합 메커니즘**:
|
||||||
|
이 옵션들은 단독으로 최종 목적지를 결정하지 않습니다. 컴파일러는 지정된 기준 경로(예: `--go_out=.`)를 바탕으로, `.proto` 스키마 장부 내부에 선언된 `option go_package = "./protoapi;protoapi"` 의 세부 경로 정보를 읽어 들여 최종 병합합니다.
|
||||||
|
따라서 **기준 경로(`.`) + 상세 상대경로(`./protoapi`)**가 결합하여 현재 실행 디렉터리 하위에 `protoapi/` 폴더가 자동 생성되고, 그 안에 번역된 다음 두 핵심 Go 파일이 정상적으로 놓이게 됩니다:
|
||||||
* `protoapi.pb.go`: 약속 문서에 적은 데이터(Message) 규격들을 Go 구조체로 변환해 놓은 파일입니다.
|
* `protoapi.pb.go`: 약속 문서에 적은 데이터(Message) 규격들을 Go 구조체로 변환해 놓은 파일입니다.
|
||||||
* `protoapi_grpc.pb.go`: 기기와 서버가 실제로 요청을 주고받을 수 있게 하는 통신 창구(Service) 함수가 자동 완성된 파일입니다.
|
* `protoapi_grpc.pb.go`: 기기와 서버가 실제로 요청을 주고받을 수 있게 하는 통신 창구(Service) 함수가 자동 완성된 파일입니다.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user