티스토리 뷰

Protocol Buffer Compiler 설치

linux 환경 기반
$ sudo apt install -y protobuf-compiler
$ protoc --version
libprotoc 3.12.4

ProtoBuf 파일 작성

proto/greet.proto

syntax="proto3";
package greet;

message Greeting {
    string first_name = 1;
    string last_name = 2;
}

service GreetService {
    rpc Greet(Greeting) returns (Greeting) {}
}

tonic-build로 ProtoBuf 파일 컴파일하기

Cargo.toml 파일에 build dependency 추가

[package]
name = "hello-proto"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[build-dependencies]
tonic-build = "0.10"

build.rs 작성

build.rs는 루트 디렉터리에 생성!
fn main() {
    tonic_build::configure()
        .out_dir("src/")
        .compile(
            &["proto/greet.proto"],
            &["proto/"],
        )
        .unwrap();
}
  • out_dir : 컴파일을 통해 생성된 rust 파일이 저장될 경로
  • compile : 컴파일할 ProtoBuf 파일들과 파일들의 경로
  • build_client, build_server : 기본적으로 true라 명시해 줄 필요는 없음
  • file_descriptor_set_path : 서버 리플렉션을 구현하기 위해 필요한 옵션, 일단 패스

ProtoBuf 파일 컴파일하기

$ cargo build

컴파일 결과

$ tree -L 2
.
├── Cargo.lock
├── Cargo.toml
├── build.rs
├── proto
│   └── greet.proto
├── src
│   ├── greet.rs
│   └── main.rs
└── target
    ├── CACHEDIR.TAG
    └── debug

4 directories, 7 files

 src 디렉터리에 greet.rs가 생성됨.

최근에 올라온 글
최근에 달린 댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday
글 보관함