[Rust] Cargo.toml을 알아보자
4. Cargo.toml을 알아보자
프로젝트 루트 디렉토리에 Cargo.toml 파일이 있었습니다.
Cargo.toml은 프로젝트에 대한 정보를 모아 두는 곳입니다.
앞에서 만든 hello 프로젝트의 Cargo.toml를 살펴 보겠습니다.
[package]
name = "hello"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.Rust-lang.org/cargo/reference/manifest.html
[dependencies]
toml 파일의 주석은 ‘#’으로 시작합니다.
# See more keys and their definitions at https://doc.Rust-lang.org/cargo/reference/manifest.html
이 부분은 주석입니다. 지워도 프로젝트에 영향이 없습니다.
Hello 프로젝트의 Cargo.toml 파일에 이미 들어 있는 내용 외에 많은 것들이 더 들어 갈 수 있습니다.
다음은 알아 두면 좋을 만한 것들을 추가한 Cargo.toml 파일 내용입니다.
[package]
name = "hello"
version = "0.1.0"
edition = "2021"
description = "An test program"
license = "MIT"
keywords = ["test", "toml", "cargo"]
authors = ["Ryan Kim <lion@friends.mail>", "Prodo Lee <prodo@friends.mail>"]
[dependencies]
http = "0.2.8"
json = “0.12.4"
[package]부터 살펴 보겠습니다.
[package]에는 프로젝트에 대한 일반적인 메타 데이터가 모여 있습니다.
이 프로젝트는 이런 것이다 하고 설명하는 내용입니다.
name은 프로젝트 이름,
version은 버전을 표시합니다.
description은 프로젝트에 대한 간략한 설명입니다.
licesse는 저작권 종류를 표시합니다.
keyword는 Rust의 라이브러리인 Crate를 모아 놓은 crates.io에 라이브러리를 만들어 등록했을 때 다른 사용자들이 검색 할 수 있도록 돕는 키워드를 설정할 수 있습니다.
authors는 프로그램 저작자들의 리스트입니다. 반드시 위의 형식을 준수해야합니다. 비록 저작자가 한 명이라도 리스트 형식을 지켜야 합니다. 저작자 이름과 메일주소가 형식에 맞게 기입되어야 합니다. 그렇지 않으면 에러가 발생 합니다.
dependencies에는 프로젝트가 사용하는 crates들의 이름과 버전이 등록됩니다. 여기에 crate를 등록해야 프로젝트에서 사용할 수 있습니다. crate는 Rust의 라이브러리입니다.
https://crates.io 에서 필요한 crates를 검색하고 toml에 기입할 스니팻을 복사할 수 있습니다.
또는 터미널에서
cargo search 찾는 크레이트 이름
명령어를 사용해서 찾을 수도 있습니다.
➜ ~ cargo search http
http = "0.2.8" # A set of types for representing HTTP requests and responses.
qiniu-http-client = "0.1.3" # Qiniu HTTP Client for Rust
constellation-server = "1.14.1" # Pluggable authoritative DNS server. Entries can be added & removed from an HTTP REST API.
http-server = "0.7.5" # Simple and configurable command-line HTTP server
……
위 예는 터미널에서 cargo search http 명령을 사용해서 http 크레이트를 검색 해본 결과의 일부입니다.
만약 http = “0.2.8"을 사용 하기로 했다면 Cargo.toml의 [dependency]에 그대로 복사해서 붙여 넣으면 프로젝트에서 사용할 수 있습니다. 이 방법을 사용하면 cargo build나 cargo run 등의 명령어로 프로젝트를 한 번 빌드해 줘야 크레이트가 crate.io에서 다운 되어서 반영됩니다.
이 방법 보다 더 편리한 방법이 있습니다.
cargo add http
이 방법을 사용하면 자동으로 Cargo.toml에 등록되고 크레이트도 다운로드됩니다.