티스토리 뷰
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가 생성됨.
'Rust > 코딩 하기' 카테고리의 다른 글
[Rust] stylus를 사용해 Rust로 Arbitrum stylus testnet에 스마트 컨트랙트 배포하기 (0) | 2023.12.28 |
---|---|
[Rust] gRPC 서버 Docker 이미지 빌드 및 docker compose 네트워크 에러 해결 (0) | 2023.12.27 |