Rust에서 컴파일을 rustc
로 사용하는게 기본이다.
그치만 rustc
를 사용하게 된다면 많은 애로사항이 꽃피게 된다.
그러기에 우리 Rustacean들은 cargo를 적극 사용한다.
$ cargo --version
cargo 1.60.0 (d1fd9fe2c 2022-03-01)
만약 명령어를 찾을 수 없습니다
가 뜬다면
여러분이 rust를 다운받은 곳의 문서를 확인해주시길 바란다.
cargo new {{project_name}} --bin
cargo new {{project_name}}
둘은 별 다를바 없다.
설명을 보면
--bin Use a binary (application) template [default]
다음과 같기 때문이다.
기본값이여서!!
또한 생성된 파일 구조를 보면
root - .git
- src - main.rs
- .gitignore
- Cargo.toml
의 형태로 구조가 생성된다.
git
이 기본적으로 생성되고 초기화 되어있는걸 볼 수 있다는 뜻이다.
[package]
name = "test2"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
다음과 같은 형식으로 나타나게 된다.
해당 파트의 경우 패키지 환경설정값들을 의미한다.
해당 파트의 경우 해당 프로젝트에 대한 의존성을 나타낸다.
또한 러스트에서 각 패키지들을 crate(크레이트)
라고 부른다.
방금 막 만든 Cargo 프로젝트를 빌드시켜볼 것이다.
cargo.toml
이 있는 위치에서 마법을 부려 볼 것이다.
주문은 다음과 같다
$ cargo build
Compiling test2 v0.1.0 (D:\coding\rust_test\test2)
Finished dev [unoptimized + debuginfo] target(s) in 2.00s
그리고 우린 빌드된 파일을
target/debug
에서 찾아 볼 수가 있다.
윈도우라면 test2.exe
파일이 아니라면 test2
가 생길 것이다.
한번 빌드시켰던 파일이라면, 변경사항이 없다면!
우리 똑똑한 cargo는 다시 한번더 컴파일하지않는다.
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Runningtarget\debug\test2.exe
Hello, world!
만약 변경사항이 있다면
빌드 이후, 파일을 실행시켜준다.
$ cargo check
Checking test2 v0.1.0 (D:\coding\rust_test\test2)
Finished dev [unoptimized + debuginfo] target(s) in 0.27s
이 친구는 좀 간단하고 편리하다.
그저 단지, 해당 파일이 컴파일이 성공할 수 있는지에 대해서 알려준다.
실행파일은 생성하지않은 채
그러기에 build
보다 빠르면서 효율적이다.
물론 간단한 Hello World
나 출력하는 프로그램에서는 cargo
가 이점을 얻지는 못한다.
그렇지만 더 복잡한, 체계적인, 의존성을 지닌 프로그램에서는 빛을 발하게 되어있다.
그 문제를 해결하기 위해서 나온 프로그램이기에.