시뻘건 개발 도전기

러스트 3 - Cargo 본문

프로그래밍/RUST

러스트 3 - Cargo

시뻘건볼때기 2019. 2. 10. 14:30
반응형

Rust는 "cargo"라 불리는 Build System&Package Manager라는 녀석이 있다.

https://maeng-dev.tistory.com/3 에서 rust를 설치 했다면 이미 cargo는 설치가 되어 있을 것이다.


cargo --version


"command not found"가 나타나면 설치가 되지 않은 것이기 때문에 제거 후 다시 설치 해야한다.






1. cargo로 Project를 만들어보자


▶ cargo new cargo_project --bin



command를 해석 해보자.

cargo new cargo_project : "cargo_project"라 불리는 새로운 바이너리를 생성할 꺼야.

--bin : 라이브러리가 아니라 실행 가능한 application(바이너리)으로.

사실 "바이너리로 생성하겠다."는 default다. bin 옵션이 있으나 없으나 같다는 말이다.

cargo에게 물어보자.

▶ cargo new --help



이렇게 cargo_project로 들어가 보면 다음과 같을 것이다.

Cargo.toml : cargo의 환경설정 

src : cargo가 관리하는 rs 파일


Cargo.toml을 더 파보자.



[package]는 "이제 package 환경설정을 나타내는 섹션들이 등장할꺼야."라고 알려준다.

- 기본 섹션들은 cargo가 직접 수집한다.

[dependencies]는 "이제 dependency된 녀석들의 정보가 등장할꺼야."라고 알려준다.

#TUST TEAM에서는 "code package를 크레이트(crate)라고 부르자."라고 정의했다.

크레이트는 라이브러리 라고 생각하면 이해가 쉬울 것 같다.


src/main.js를 더 파보자.



Hello Rust!장에서 다루었던 내용가 상당히 일치한다.

그 말은 이렇게 해석된다.

cargo가 rust 파일을 src에 위치시키는구나.

cargo는 src 안에 위치한 rust파일을 관리 하는구나.


2. cargo Project Build 및 실행


▶ cargo build && cargo run



A. build

1. cargo는 최상위 디렉토리에 target/debug/라는 디렉토리를 생성하고 그 속에 실행파일(바이너리)를 만들게 된다.

2. cargo는 최상위 디렉토리에 Cargo.lock 파일을 생성한다. 이 파일의 역할은 다음 시간에 알아보자.


B. execute

1. 보이난 바와 같이 "target/debug/cargo_project"를 run! 하게 된다.



3. Compiling


▶ cargo check



C부터 시작해서 python, ruby, java 등등 많은 언어를 다루고 컴파일하고 결과물을 도출했지만 공통점이 있다.

정말 짜증스럽게도 "난 결과보다 내 코드에 이상이 있는지 알고싶어."라는 생각을 굉장히 자주 하게 된다.

일부 개발자 혹은 전공 학생들은 "build만 되면 이상 없는 것 아닌가?"라고 생각할지 모른다.

하지만, cargo에서 만큼은 build보다 check가 훨신 속도가 빠르기 때문에 check를 권장한다.

그 이유는 check는 build와 다르게 실행파일을 생성하는 과정을 생략하기 때문이다.



4. 배포(release)


▶ cargo build --release



"나는 build할 꺼야. 배포용으로."라는 말이다.

release를 하게 되면 target/release/가 만들어지고 build와 다르게 rust code를 최적화를 시키게 된다,

반응형

'프로그래밍 > RUST' 카테고리의 다른 글

러스트 5 - 변수와 타입 #2  (0) 2019.02.16
러스트 4 - 변수와 타입 #1  (0) 2019.02.16
러스트 2 - How to run  (0) 2019.02.09
러스트 1 - Hello Rust!  (0) 2019.02.09
개발환경  (0) 2019.02.09
Comments