Rust

[Rust] 카고(Cargo)에 대해서

luk_hwkim 2022. 11. 7. 17:14

카고(Cargo)란? 

카고는 러스트의 빌드 시스템이자 패키지 관리자이다. 

카고는 코드의 빌드, 코드가 의존하는 라이브러리의 다운로드, 그리고 이런 라이브러리의 빌드 등 다양한 작업을 대신 처리해주기 때문에 대부분의 러스타시안은 이 도구를 이용해 러스트 프로젝트를 관리한다.

 

 

카고를 이용한 프로젝트 생성

운영체제와 관계없이 다음의 명령을 통해 카고 프로젝트를 생성한다

$cargo new hello_cargo(프로젝트명)

cargo로 프로젝트를 생성하게 되면 main.rs 파일이 보관된 src 디렉토리와 Cargo.toml파일을 자동으로 생성 해준다.

 

 

Cargo.toml?

이 파일은 TOML(Tom's Obvious, Minimal Language) 형식으로 작성되어 있다. 이 형식은 카고의 설정 파일 형식이다.

[package] 섹션은 프로그램을 컴파일 할때 필요한 이름, 버전 및 작성자, 그리고 러스트가 사용할 에디션등의 설정 정보를 지정하는 코드 섹션이다.

[dependencies]는 프로젝트의 의존 라이브러리 목록을 관리하는 섹션이다. 러스트에서 코드의 패키지는 '크레이트(crate)'라고 부른다.

 

 

카고(Cargo) 프로젝트의 빌드

카고 프로젝트의 빌드 명령어는 다음과 같다.

$cargo build

 

빌드된 실행파일은 현재 디렉터리가 아니라 target\debug\hello_cargo 경로에 생성된다.

이 실행 파일은 다음의 명령으로 실행할 수 있다.

$.\target\debug\hello_cargo

 

그리고 위 처럼 build와 실행을 따로 진행하지 않고 run 명령어를 통해 빌드와 실행을 한번에 할 수도 있다.

$cargo run

 

카고는 cargo check라는 명령 또한 지원하는데 이 명령은 코드의 컴파일 여부를 신속하게 검사하지만 실행 파일은 생성하지 않는다.

 

❗그렇다면 왜 이런 명령어가 필요할까?

통상적으로 cargo check명령은 실행파일을 생성하는 과정을 생략하므로 cargo build 명령보다 훨씬 빠르게 실행된다. 따라서 코드를 작성하는 동안 작업 결과에 오류가 없는지를 계속 확인하려면 cargo check명령을 이용하는 편이 빠르다. 그래서 러스타시안들은 수시로 cargo check 명령을 실행해서 자신들의 코드가 제대로 컴파일 되는지를 확인하고, 실행파일이 필요하면 그때 cargo build 명령을 실행한다.

 

 

릴리즈 빌드

프로젝트를 릴리즈할 준비가 되면 cargo build --release를 이용해서 최적화된 컴파일을 실행할 수 있다. 

실행파일은 target/release 경로에 생성된다. (cargo run --release 역시 가능하다)

 

 

⭕요약

  • 카고(Cargo)는 Rust의 빌드 시스템이자 패키지 관리자이다. 
  • cargo new를 통해 프로젝트를 생성시 자동으로 Rust프로젝트에 필요한 파일을 생성해준다.
  • Cargo.toml은 카고의 설정 파일 형식이고, [package], [dependecies] 두 섹션으로 나뉘어진다.
  • cargo build와 cargo check 명령으로 프로젝트를 빌드 할 수 있다.
  • cargo run명령으로 프로젝트의 빌드와 실행을 한번에 할 수 있다.
  • cargo build --release 명령으로 프로젝트의 릴리즈 빌드를 진행할 수 있다.