Cargo
Rust-Lang은 Node의 NPM처럼 Cargo라는 공식 패키지 관리자를 제공하고 있다. 러스트 공식 문서에서는 source.rs
를 생성하여 코드를 작성하는 것 보다는 Cargo를 이용하는 것을 추천하고 있다. Cargo를 사용하면 소스코드의 라이브러리 의존성을 간단하게 관리할 수 있다.
새로운 프로젝트
cargo new project_name
위 명령어를 사용하여 프로젝트를 생성할 수 있다. 라이브러리를 생성하는 거라면 아래와 같이 생성할 수 있다.
cargo new --lib library_name
프로젝트를 생성하면 아래와 같은 계층으로 생성된다.
project_name
├── Cargo.toml
└── src
└── main.rs
Cargo.toml
[package]
name = "project"
version = "0.1.0"
authors = ["baealex <im@baejino.com>"]
edition = "2018"
[dependencies]
clap = "2.27.1" # from crates.io
rand = { git = "https://github.com/rust-lang-nursery/rand" } # from online repo
bar = { path = "../bar" } # from a path in the local filesystem
Cargo.toml
파일은 프로젝트의 전체적인 내용을 관리해주는 파일이다.
[package]
: 프로젝트의 이름과 생성자가 자동으로 생성되며 프로젝트의 버전을 명시적으로 관리할 수 있다.[dependencies]
: 라이브러리를 기록하여 프로젝트를 의존성을 관리할 수 있다. 버전을 나열하면crates.io
에서 설치하며 online repo와 local path로 작성해둘 수도 있다.
Crate 설치
크레이트는 러스트 코드의 묶음(라이브러리)인데 만일 rand
라는 크레이트를 설치하려면 Cargo.toml
의 dependencies
에 아래 내용을 추가한다.
[dependencies]
rand = "0.3.14"
위와같이 수정하면 별도의 설치 작업을 해주지 않아도 된다. 아래 빌드 명령을 실행하면 Cargo가 변화된 크레이트를 감지하여 알아서 설치한다. 설치후 Cargo.lock이 생성되는데 차후에 다시 프로젝트를 빌드할 때 Cargo.lock이 존재하는 경우 Cargo.lock에 적혀진 크레이트와 동일한 버전을 설치하게 된다.
프로젝트 빌드 & 실행
러스트를 단일 소스코드로 생성한 경우 rustc
라는 명령어로 컴파일을 실행해주어야 하는데 Cargo를 사용하여 프로젝트를 생성한 경우
cargo build
위 명령어를 통해서 빌드할 수 있다. 그럼 target/debug
에 윈도우의 경우 exe
, 리눅스의 경우에는 확장자 없는 실행파일로 생성되어 있는 것을 확인할 수 있다. 릴리즈로 빌드하려면 위 빌드 명령어에서 --release
옵션을 붙여주면 된다.
곧바로 실행한 결과를 확인하려면 아래 명령어를 사용하면 된다.
cargo run
Ghost