시뻘건 개발 도전기

러스트 23 - Packages와 Crates, 그리고 Modules #1 : Packages와 Crates 본문

프로그래밍/RUST

러스트 23 - Packages와 Crates, 그리고 Modules #1 : Packages와 Crates

시뻘건볼때기 2019. 4. 21. 22:44
반응형

 

앞 소개 게시글 <러스트 22 - Packages와 Crates, 그리고 Modules>에서 언급했 듯이, Packages와 Crates는 라이브러리와 실행 파일을 만들어주는 녀석들이다.

  • crate는 바이너리 혹은 라이브러리이다.
  • crate root는 crate를 빌드할 때 사용되는 소스 파일이다.
  • package는 Crates를 빌드하는 방법을 설명하는 Cargo.toml를 가지고 있다. package의 crate는 하나의 라이브러리가 될 수 있다.

(아직 감이 잘 오지 않는다...)

 

우리가 처음 Cargo를 사용했을 때를 기억해보자... [cargo new] command를 사용했었다. 그렇게 프로젝트를 생성을 했었다. 여기서 생각해야할 것은 생성된 프로젝트에 package가 생겼다는 것. 왜? Cargo가 Cargo.toml파일을 만들었기 때문.

이상하게도 Cargo.toml 내용을 보면 src/main.rs에 대한 내용이 없다. run을 하게 되면 분명 main.rs가 실행 되는데 그 어디에도 main.rs에 대한 내용을 찾아볼 수 없다.

Cargo 규칙에 따르면 package의 Cargo.toml과 같은 디렉토리에 main.rs가 포함된 src가 있는 경우, Cargo는 이 package가 package 이름과 같은 이진 crate를 포함하고 src/main.rs가 crate root임을 알고 있다.

Cargo의 또 다른 규칙은 package 디렉토리에 src/lib.rs가 포함되어 있으면 package와 package 이름과 같은 라이브러리 crate가 포함되어 있고 src/lib.rs가 해당 crate root가 된다.

crate root파일은 Cargo에 의해 rustc에 전달되어 라이브러리 혹은 바이너리(실행파일)을 빌드한다.

 

package는 0개 또는 1개의 라이브러리 crate와 원하는 만큼의 이진 crate를 포함할 수 있다. package는 적어도 하나의 crate가 있어야 한다.

반응형
Comments