RUST Cargo란?

Rust DEVELOPMENT IT

러스트에서 Cargo는 Nodejs의 npm, yarn이나 Java의 maven, gradle, PHP의 composer등과 같은 패키지 관리자이며 빌드 시스템이기도 하다.

Cargo를 이용하면 의존성 추가하기가 쉽다. (ㅋㅋㅋ)

카고 버전 확인

1
cargo --version

카고 프로젝트 생성

1
cargo new project_name

위와같이 프로젝트를 생성하면 프로젝트 디렉터리 내에 Cargo.toml, src 디렉터리가 있으며, src내에는 main.rs 가 기본적으로 생성되네?

  • TOML : Tom’s Obvious Minimal Language

Rust에서 코드의 패키지는 crate라고 부른다.
카고 프로젝트는 모든 소스코드를 src하위에 저장하며, 최상위 디렉터리는 README, 라이센스, 설정 파일등의 코드와 무관한 파일들을 저장한다.

빌드 (프로젝트 디렉터리 내에서)

1
cargo build

cargo build 후에는 target이라는 디렉터리가 생성되며 그 안에 debug 디렉터리, 그 안에 프러젝트명으로 컴파일된 파일이 저장된다. ./project_name으로 실행하면 컴파일된 rust 프로그램이 실행된다.

빌드 및 실행

1
cargo run

위의 명령어를 실행 시 컴파일을 진행하고 경로를 찾아 들어가서 실행하지 않아도 해당 프로젝트의 결과물을 실행해준다. (빌드 + 실행을 한번에!)

코드 체크

1
cargo check

실행파일 생성 과정이 없으므로 빠르게 코드가 정상적인지 검증이 가능하여, 자주 사용한다.

  • cargo 사용 시 OS와 무관하게 같은 명령을 사용할 수 있다.

릴리즈용 빌드하기

1
cargo build --release

위와 같이 빌드를 진행하면 최정화된 방식으로 컴파일을 실행하며, target/release에 빌드 결과물이 저장된다.
최적화된 덕분에 결과물의 실행은 아주 빠르지만 컴파일 시간은 좀 더 소요된다.

  • cargo build 시 Cargo.toml에 추가된 dependencies가 있으면 crates.io에서 다운로드 한다.
  • 최초로 cargo build를 실행할 때 Cargo.lock 파일이 생성되며, 여기에는 현재 프로젝트에서 사용하는 dependencies들의 버전을 기록한다. 이로써 원치않는 crate의 업데이트로 인한 build crash를 막아준다. (다른 모든 패키지 매니저들이 취하는 방식과 같다.)

crate 버전 업데이트

1
cargo update

Cargo.lock과 관계 없이 새로운 버전의 crate로 업데이트 한다.

프로젝트의 dependencies가 제공하는 docs 보기

1
cargo doc --open

모든 의존 패키지가 제공하는 문서를 로컬에 빌드 후 브라우저로 보여준다.