[Rust 공식문서 한국어 정리] ⑤. The Cargo Book
[Rust 공식문서 한국어 정리] ⑤. The Cargo Book
원문: https://doc.rust-lang.org/cargo/
#Rust #Rustlang #Cargo #PackageManager #BuildSystem #공식문서
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
The Cargo Book은 Rust의 공식 패키지 관리자이자 빌드 시스템인 Cargo에 대한 포괄적인 가이드입니다. Cargo는 의존성 다운로드, 패키지 컴파일, 배포 가능한 패키지 생성, crates.io 업로드 등 Rust 개발의 전체 워크플로우를 관리합니다. Rust를 설치하면 함께 제공되며, 거의 모든 Rust 프로젝트의 중심에 위치한 도구입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. 핵심개념
• Package Manager: crates.io 및 Git 기반 의존성 관리
• Build System: cargo build, cargo test, cargo run 등 통합 빌드 명령
• Workspace: 다중 크레이트 프로젝트 관리
• Manifest(Cargo.toml): 프로젝트 메타데이터, 의존성, 빌드 설정 정의
• Profiles: dev, release, test 등 빌드 최적화 프로파일
• Features: 선택적 기능과 조걸적 컴파일
• Publishing: crates.io 배포와 SemVer 기반 버저닝
• Custom Commands: cargo 확장 및 커스텀 서브커맨드
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 주요내용상세
3.1 Getting Started
cargo new, cargo init으로 프로젝트를 생성하고, Cargo.toml의 기본 구조([package], [dependencies])를 이해합니다. bin(실행 파일)과 lib(라이브러리) 크레이트 타입의 차이를 알고 적절히 선택합니다.
3.2 Guide
Cargo의 핵심 사용법을 다룹니다:
• Dependencies — 버전 요구사항, Git/GitHub 의존성, 로컬 path 의존성
• Workspaces — 여러 패키지를 하나의 워크스페이스로 관리하여 공통 빌드 캐시와 lock 파일 사용
• Features — 선택적 기능 정의, default features, feature unification
• Build Scripts — build.rs를 통한 사전 빌드 단계(프로토콜 버퍼 컴파일, C 라이브러리 링크 등)
• Environment Variables — Cargo가 설정하는 빌드 환경 변수 활용
• Cargo Home — 캐시, 바이너리, 인덱스의 로컬 저장 위치 관리
3.3 Reference
Cargo.toml의 모든 필드, 의존성 사양, 프로파일 설정, 레지스트리 설정, 빌드 스크립트 API 등의 상세 스펙을 다룹니다. Manifest Format, Dependency Resolution, Source Replacement, Authentication 등 고급 주제도 포함됩니다.
3.4 Commands
Cargo의 CLI 명령어 전체를 다룹니다:
• cargo build — 프로젝트 컴파일
• cargo test — 테스트 실행
• cargo run — 바이너리 실행
• cargo check — 빠른 문법/타입 검사
• cargo doc — 문서 생성
• cargo publish — crates.io 배포
• cargo install — 바이너리 크레이트 설치
• cargo update — 의존성 업데이트
• cargo clean — 빌드 아티팩트 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 실전활용
• 다중 크레이트 구조의 대형 프로젝트 워크스페이스 설정
• Feature flags를 활용한 선택적 기능 제공(예: async, tls, logging)
• build.rs로 C/C++ 라이브러리 링크, 프로토콜 버퍼/스키마 생성 연동
• Private Registry와 Artifactory/Nexus 연동을 통한 낼부 배포
• CI/CD 파이프라인에서 cargo test, cargo clippy, cargo fmt 자동화
• SemVer 준수와 changelog 관리를 통한 안전한 버전 업데이트
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 정리
Cargo는 단순한 패키지 관리자를 넘어 Rust 개발의 전체 생태계를 지탱하는 핵심 도구입니다. 의존성 관리부터 빌드, 테스트, 문서화, 배포까지 모든 과정을 통합적으로 처리하며, 워크스페이스와 feature 시스템으로 대규모 프로젝트도 우아하게 관리할 수 있습니다. Rust 개발자라면 Cargo의 모든 기능을 숙지하는 것이 생산성 향상의 지름길입니다.

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30