[Rust 공식문서 한국어 정리] 86. Rust Cargo.toml 가이드
[Rust 공식문서 한국어 정리] 86. Rust Cargo.toml 가이드
원문 제목: The Manifest Format
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml 파일의 전체 포맷과 각 섹션의 의미를 상세히 다룹니다.
패키지 메타데이터, 의존성, 빌드 설정을 선언하는 방법을 학습합니다.
고급 기능인 Workspace, Target, Profile 설정도 포함합니다.
프로젝트 설정에서 자주 사용하는 필드들의 동작 원리를 설명합니다.
실무에서 필요한 다양한 매니페스트 패턴을 정리합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① [package] — 이름, 버전, 저자 등 기본 메타데이터
② [dependencies] — 외부 크레이트 및 버전 요구사항
③ [features] — 조건적 컴파일과 선택적 의존성
④ [profile] — 빌드 최적화 레벨 및 설정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml은 TOML 형식으로 작성하며 Rust 프로젝트의 핵심 설정 파일입니다.
[package] 섹션의 name 필드는 crates.io에 게시할 때 사용되는 고유 식별자입니다.
version 필드는 SemVer 규칙을 따를 것을 권장하며 호환성을 명시합니다.
edition 필드는 사용할 Rust 에디션(2015, 2018, 2021, 2024)을 지정합니다.
[dependencies]에 크레이트를 추가하면 버전 범위에 맞는 최신 버전을 자동으로 해결합니다.
의존성은 =, >=, <, ~, ^ 등 다양한 버전 지정자를 지원합니다.
선택적 의존성은 optional = true로 선언하고 [features]에서 활성화합니다.
[features]를 통해 하나의 크레이트를 여러 조합으로 빌드할 수 있습니다.
[workspace]는 여러 Cargo 프로젝트가 공통 lock 파일과 target 디렉터리를 공유하도록 합니다.
members 필드에 워크스페이스에 포함할 패키지 경로를 나열합니다.
[[bin]], [[test]], [[bench]] 등으로 기본값과 다른 타겟을 추가 설정할 수 있습니다.
build 필드는 커스텀 빌드 스크립트의 경로를 지정합니다.
rust-version 필드로 패키지가 지원하는 최소 Rust 버전을 명시할 수 있습니다.
include와 exclude로 패키징에 포함하거나 제외할 파일을 제어합니다.
license, description, repository 등은 crates.io 메타데이터 표시에 사용됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
프로젝트 시작 시 [package] 섹션을 정확히 작성하여 메타데이터를 완성합니다.
의존성은 ^ 지정자를 기본으로 사용해 호환 업데이트를 허용합니다.
CI 환경별로 [features]를 선택적으로 활성화하여 조건부 컴파일을 구성합니다.
워크스페이스를 사용해 서비스와 공통 라이브러리를 한 저장소에서 관리합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml은 Rust 프로젝트의 청사진으로 모든 설정이 집중되어 있습니다.
각 섹션을 정확히 이해하면 복잡한 프로젝트도 체계적으로 관리할 수 있습니다.
메타데이터와 의존성 선언은 협업과 배포의 기초가 됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/cargo/reference/manifest.html
Cargo.toml 예제: https://doc.rust-lang.org/cargo/reference/manifest.html
#Rust #Cargo #CargoToml #Manifest #번역

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