Rust 프로젝트 디렉터리 구조
프로젝트 디렉터리 생성시 구조
- 앞선 포스팅에서 살펴본 대로, 프로젝트 생성시의 구조는 아래와 같다.
1
2
3
4
5
6
7
cd hello_world
ls -al
>> hello_world
>> ├⎯ src
>> ⎪ ├⎯ main.rs
>> ├⎯ Cargo.toml
구성 | 유형 | 역할 |
---|---|---|
Cargo.toml | 파일 | - Rust 프로젝트의 메타데이터 및 의존성 정보 관리. - 프로젝트의 이름, 버전, 저자와 같은 기본적인 정보. - 프로젝트에 필요한 외부 크레이트(의존성)의 목록을 정의. - 빌드 설정, 프로젝트 유형(예: binary 또는 library) 등의 추가적인 설정 |
src | 디렉터리 | - Rust 소스 코드 파일을 저장하는 디렉터리. - Rust 프로젝트의 핵심 로직이 포함된 소스 코드 파일이 위치. - 기본적으로 최소한 하나의 Rust 파일(일반적으로 main.rs )이 있어야 함. |
src/main.rs | 파일 | - Rust 프로그램의 시작점(진입점). - main 함수가 정의되어 있으며, 이 함수에서 프로그램이 실행됨. |
빌드 후 프로젝트 디렉터리 구조
- 여기에서 빌드(코드 실행을 포함) 후에는 target 디렉터리와 몇 가지 파일이 생성된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
project_name/
├── Cargo.lock # 의존성 잠금 파일 (빌드 후 생성)
├── Cargo.toml # 프로젝트 메타데이터 및 의존성 정의
├── src/ # 소스 코드 디렉터리
│ └── main.rs # 메인 실행 파일 (또는 lib.rs)
├── target/ # 빌드 산출물 저장소
│ ├── debug/ # 디버그 모드 빌드 결과 (cargo build)
│ │ ├── project_name # 실행 파일
│ │ ├── deps/ # 의존성 바이너리
│ │ ├── incremental/ # 증분 빌드 캐시 (항상 생성됨)
│ │ ├── *.d # 의존성 추적 파일
│ │ └── *.rlib # 라이브러리 산출물
│ ├── release/ # 릴리즈 모드 빌드 결과 (cargo build --release 실행시)
│ │ ├── project_name # 최적화된 실행 파일
│ │ └── ... # 같은 구조
│ ├── build/ # 빌드 스크립트 출력
│ ├── .fingerprint/ # 빌드 캐시 및 해시 정보
│ ├── package/ # 패키지 파일 (cargo package)
│ └── doc/ # 문서 출력 (cargo doc)
└── .git/ # Git 초기화 시 생성 (선택 사항)
Incremental 디렉터리
- 증분 빌드 : 변경 부분만 다시 컴파일 하는 것을 증분 빌드라고 함.
- Incremental 디렉터리에서 증분빌드를 위한 중간 캐시 데이터를 보관.
- Rust는 기본적으로 디버그 빌드(
cargo build
)에서 증분 빌드를 활성화 하며 - 릴리즈 빌드(
cargo build --release
)에서는 증분 빌드를 사용하지 않는다.
Comments