-
2장. Cargo 기본 명령어Language/Rust 2020. 6. 2. 12:04
1. Cargo 소개
Cargo는 Rust의 빌드 시스템 및 패키지 매니저로 프로젝트를 관리해줍니다.
Cargo를 사용하면 코드에서 의존하고 있는 라이브러리를 다운로드해주기 때문에,
의존성을 추가하기도 쉽습니다.
[1장 보충] 글을 보고 오셨다면 cargo를 사용할 준비가 끝났습니다.
Cargo 명령어를 사용할 수 있는지 확인하고 싶은 분은 다음을 cmd창에 입력하세요.
$ cargo --version
버전 숫자가 출력된다면 cargo를 사용할 수 있습니다.
아래와 같은 메시지가 나온다면 [1장 보충] 내용을 보고 cargo설치를 완료해주세요.
command not found
2020/05/28 - [Language/Rust] - 1장(보충). Rust 확장 파일 추가 설치 및 디버깅
2. Cargo 기본 명령어
지금부터 cargo 명령어를 활용해서 프로젝트 생성, 컴파일, 디버그를 해보겠습니다.
1) 프로젝트 생성
$ cargo new 프로젝트명
main.rs파일을 열어보면 hello, world! 를 출력하는 간단한 프로젝트가 생성되었습니다.
2) 빌드
다음 명령어는 프로젝트를 컴파일하고 실행파일을 생성합니다.
$ cargo build
컴파일 중이라는 메세지와 끝났다는 메시지가 출력되었습니다.
여기서 포인트는 Finished 다음 dev라는 단어입니다. (아래의 "3) 릴리즈 빌드 - 추가) 최적화 default 설정" 부분 참고)
Cargo.toml의 dependencies에 의존하는 라이브러리가 추가되는 곳입니다. (현재는 추가된 라이브러리 없음)
3) 릴리즈 빌드
이 커맨드는 최적화를 시켜서 러스트 코드를 빠르게 만들어줍니다.
하지만 컴파일 시간이 길어지게 되어서 코드를 자주 컴파일하는 경우에는 더 느려집니다.
따라서, 엔드유저가 사용할 최종 프로그램을 빌드하기 위해 사용하는 커맨드입니다.$ cargo build --release
컴파일 중이라는 메세지와 끝났다는 메시지가 출력되었습니다.
여기서 포인트는 Finished 다음 release라는 단어입니다. (아래의 "추가) 최적화 default 설정" 부분 참고)
커맨드 실행 결과 target 밑에 release 폴더가 생긴 것을 확인할 수 있습니다.
추가) 최적화 default 설정
[profile.dev], [profile.release]에 opt-level에는 0, 1, 2, 3, "s", "z" 값을 입력할 수 있습니다.
opt-level은 최적화 정도를 나타내며 숫자가 커질수록 더 많이 최적화 됩니다.
[profile.dev]는 cargo build 명령어, [profile.release]는 cargo build release 명령어와 매칭 됩니다.
저는 일반 빌드는 최적화 0으로 지정하고, 릴리즈 빌드는 최적화 3 레벨을 기본값으로 한다고 정의하였습니다.
(필요에 따라 레벨을 지정하여 사용하시길 바랍니다.)
4) 디버깅
//방법1) 디버깅 $ ./target/debug/프로그램 이름 //방법2) exe파일 실행 $ ./target/debug/프로그램exe파일.exe on Windows
5) 빌드 + 디버깅
$ cargo run
결과를 보면 우리는 빌드와 디버깅을 함께 해주는 코드를 실행하였는데
컴파일 중이라는 코드가 나오지 않고 있습니다.
이는 앞서 컴파일이 완료된 코드이며, 변경사항이 없어서 컴파일을 하지 않은 것입니다.
코드를 수정하고 저장한 뒤 다시 run 명령어를 입력한다면 컴파일 중이라는 메시지가 나오는 것을 볼 수 있습니다.
6) 컴파일 체크
이 명령어는 코드가 컴파일되는지 빨리 체크하고, 실행파일은 생성하지 않습니다.
$ cargo check
장점은 코드를 써 나가다가 중간에 실행파일을 생성하지 않은 상태에서
내 코드가 오류 없이 잘 컴파일이 되는지 확인할 수 있다는 점입니다.코드 수정 후 컴파일 체크
코드 수정 없이 컴파일 체크
참고자료
https://doc.rust-lang.org/cargo/reference/profiles.html
'Language > Rust' 카테고리의 다른 글
4장. Rust 데이터 타입 (1) 2020.07.05 3장. Rust 변수 (1) 2020.06.08 1장(보충). Rust 확장 파일 추가 설치 및 디버깅 (0) 2020.05.28 1장. Rust 개발 환경 구축하기 (0) 2020.05.28