cargo
Rust project의 dependency, build, test, documentation, package, publish workflow를 관리하는 표준 도구.
Summary
Cargo.toml manifest와 Cargo.lock lockfile을 기준으로 crate graph를 해석하고 rustc, rustdoc, external Cargo subcommand를 실행한다.
Installation
cargo는 rustup toolchain에 포함된다. platform별 설치는 Rust Installation을 따른다.
rustup default stable
cargo --version
Usage
cargo [options] command [args]
cargo COMMAND [options…] [args…]
Project Commands
new PATH,init [PATH]: 새 package 생성 또는 기존 directory 초기화.add CRATE,remove CRATE: manifest dependency 추가·제거.generate-lockfile,update: lockfile 생성 또는 허용 범위 내 version 갱신.metadata: resolved package graph를 JSON으로 출력.tree: dependency graph를 tree로 표시.
Build Commands
check: code generation 없이 빠르게 type check.build: 현재 package 또는 workspace compile.run: binary target build 후 실행.test: unit, integration, documentation test 실행.bench: benchmark target 실행. stable/nightly 요구사항은 benchmark framework에 따라 확인한다.doc: package API documentation 생성.clean: Cargo가 생성한 build artifact 삭제. 큰 workspace에서는 삭제 범위를 먼저 확인한다.
Package Commands
fetch: lockfile dependency를 미리 내려받음.vendor: dependency source를 local directory로 복사.install CRATE: binary crate를 compile해$CARGO_HOME/bin에 설치.package: publish archive를 검증하고 생성.publish: registry에 package upload. token과 package 내용을 반드시 사전 점검한다.yank VERSION: 새 dependency resolution에서 특정 release 사용을 억제하며 기존 lockfile 사용을 삭제하지는 않는다.
Common Options
-p SPEC,–package SPEC: workspace package 선택.–workspace: workspace 전체 선택.–all-targets: library, binary, example, test, benchmark target 포함.–features FEATURES,–all-features,–no-default-features: feature selection.–release: optimized release profile 사용.–target TRIPLE: compilation target 지정.–locked: lockfile 변경이 필요하면 실패.–frozen: network와 lockfile 변경을 모두 금지.–offline: network를 사용하지 않고 local cache만 사용.–timings: build timing report 생성.-v,-vv: 상세 output.
Examples
cargo new my-app cd my-app cargo add serde --features derive cargo check cargo build --release cargo run -- --help cargo test --workspace cargo tree --duplicates cargo doc --no-deps --open cargo install ripgrep --locked
Config
Cargo configuration의 file location, precedence, network, target, alias, credential 지침은 Cargo config를 참고한다.
Safety
cargo publish전에는cargo package –list와 archive 내용을 확인하고 secret이나 local file이 포함되지 않았는지 검토한다.cargo install은 third-party source를 local machine에서 compile한다. crate 이름, version, source, lockfile 사용 여부를 확인한다.- build script와 procedural macro는 build 중 code를 실행할 수 있으므로 dependency를 신뢰 경계로 취급한다.
Troubleshooting
- 재현 가능한 CI에서는 committed
Cargo.lock정책에 맞춰–locked또는–frozen을 사용한다. - dependency feature 충돌은
cargo tree -e features와cargo metadata로 조사한다. - native library 오류는 build script output을 보기 위해
cargo build -vv를 사용한다.
Help
See Also
History
- codex:: 2026-07-20 Added Cargo project, dependency, build, package, safety, and troubleshooting reference.