RUST Cargo란?

Rust DEVELOPMENT IT

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

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

카고 버전 확인

cargo --version

카고 프로젝트 생성

cargo new project_name

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

  • TOML : Tom’s Obvious Minimal Language

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

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

cargo build

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

빌드 및 실행

cargo run

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

코드 체크

cargo check

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

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

릴리즈용 빌드하기

cargo build --release

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

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

crate 버전 업데이트

cargo update

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

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

cargo doc --open

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