일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Baekjoon
- 코딩테스트
- 프레임워크
- 개발
- 알고리즘
- 읽기쉬운코드
- 백준
- 개발자
- 애자일프로그래밍
- 자바
- Spring
- 그리디알고리즘
- Java
- 데이터베이스
- 애자일기법
- spring boot
- 스프링
- 애자일
- database
- Elasticsearch
- 엘라스틱서치
- 코딩
- JPA
- ES
- 클린코드
- 그리디
- API
- framework
- cleancode
- 코드
- Today
- Total
튼튼발자 개발 성장기🏋️
러스트 3 - Cargo 본문
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 |