rust-lang/cargo
GitHub: rust-lang/cargo
Rust 语言的官方包管理与构建工具,集依赖解析、项目编译、测试运行和 crate 发布于一体。
Stars: 14667 | Forks: 2841
# Cargo
Cargo 用于下载 Rust 项目的依赖并编译您的项目。
**想要开始使用 Cargo**,请访问 [The Cargo Book] 了解更多。
**想要参与开发 Cargo 本身**,请阅读 [Cargo Contributor Guide]。
## 代码状态
[](https://github.com/rust-lang/cargo/actions/workflows/main.yml)
代码文档:
## 从源码编译
### 要求
编译 Cargo 需要以下工具和包:
* `cargo` 和 `rustc`
* 一个适用于[您的平台](https://github.com/rust-lang/cc-rs#compile-time-requirements)的 C 编译器
* `git`(用于克隆此仓库)
**其他要求:**
以下内容根据您的平台和需求可能是可选的。
* `pkg-config` — 用于帮助定位系统包,例如 `libssl` 头文件/库。在某些情况下可能不需要,例如使用 vendored OpenSSL 时,或者在 Windows 上。
* OpenSSL — 仅在类 Unix 系统上需要,且仅当未使用 `vendored-openssl` Cargo feature 时。
这需要开发头文件,可以从 Ubuntu 上的 `libssl-dev` 包,或通过 apk 或 yum 安装的 `openssl-devel`,或 macOS 上通过 Homebrew 安装的 `openssl` 包获取。
如果使用 `vendored-openssl` Cargo feature,则会从源码构建 OpenSSL 的静态副本,而不是使用系统 OpenSSL。
这可能需要额外的工具,例如 `perl` 和 `make`。
在 macOS 上,将检查 Homebrew、MacPorts 或 pkgsrc 的常见安装目录。否则将回退到 `pkg-config`。
在 Windows 上,将使用系统提供的 Schannel。
同时也支持 LibreSSL。
**可选系统库:**
构建过程将自动使用以下库的 vendored 版本。但是,如果系统提供了这些库且可以通过 `pkg-config` 找到,则会使用系统库:
* [`libcurl`](https://curl.se/libcurl/) — 用于网络传输。
* [`libgit2`](https://libgit2.org/) — 用于获取 git 依赖。
* [`libssh2`](https://www.libssh2.org/) — 用于通过 SSH 访问 git 仓库。
* [`libz`](https://zlib.net/) (亦称 zlib) — 上述 C 库使用它进行数据压缩。(Rust 代码则使用 [`zlib-rs`](https://github.com/trifectatechfoundation/zlib-rs)。)
建议使用 vendored 版本,因为它们是经过测试可与 Cargo 配合使用的版本。
### 编译
首先,您需要检出此仓库
```
git clone https://github.com/rust-lang/cargo.git
cd cargo
```
在已经安装 `cargo` 的情况下,您只需运行:
```
cargo build --release
```
## 为 Cargo 添加新的子命令
Cargo 设计为可通过新的子命令进行扩展,而无需修改
Cargo 本身。请参阅 [Wiki 页面][third-party-subcommands] 以了解更多详情以及
已知社区开发的子命令列表。
## 发布版本
Cargo 的发布与 Rust 的发布同步。
高级发布说明作为 [Rust 发布说明][rel] 的一部分提供。
详细的发布说明可在 [changelog] 中找到。
## 报告问题
发现了 Bug?我们很希望能知道!
请在 GitHub [issue tracker][issues] 上报告所有问题。
## 许可证
Cargo 主要根据 MIT 许可证
和 Apache 许可证(2.0 版)的条款进行分发。
有关详细信息,请参阅 [LICENSE-APACHE](LICENSE-APACHE) 和 [LICENSE-MIT](LICENSE-MIT)。
### 第三方软件
本产品包含由 OpenSSL Project 开发的软件,用于
OpenSSL Toolkit (https://www.openssl.org/)。
在二进制形式下,本产品包含根据 GNU 通用公共许可证(版本 2)条款授权的软件,包含链接例外,
可从 [上游仓库][1] 获取。
有关详细信息,请参阅 [LICENSE-THIRD-PARTY](LICENSE-THIRD-PARTY)。
标签:Cargo, crates.io, DNS解析, Linux 内核安全, Rust, Rustlang, Rust包管理器, 依赖管理, 包管理器, 可视化界面, 安全测试工具, 开源项目, 数据集, 系统编程, 统一API, 编译器, 网络流量审计, 自动化构建, 软件开发, 通知系统, 通知系统, 项目管理