Code documentation: https://doc.rust-lang.org/nightly/nightly-rustc/cargo/
Cargo requires the following tools and packages to build:
cargo
and rustc
git
(to clone this repository)Other requirements:
The following are optional based on your platform and needs.
pkg-config
— This is used to help locate system packages, such as libssl
headers/libraries. This may not be required in all cases, such as using vendored OpenSSL, or on Windows.
OpenSSL — Only needed on Unix-like systems and only if the vendored-openssl
Cargo feature is not used.
This requires the development headers, which can be obtained from the libssl-dev
package on Ubuntu or openssl-devel
with apk or yum or the openssl
package from Homebrew on macOS.
If using the vendored-openssl
Cargo feature, then a static copy of OpenSSL will be built from source instead of using the system OpenSSL. This may require additional tools such as perl
and make
.
On macOS, common installation directories from Homebrew, MacPorts, or pkgsrc will be checked. Otherwise it will fall back to pkg-config
.
On Windows, the system-provided Schannel will be used instead.
LibreSSL is also supported.
Optional system libraries:
The build will automatically use vendored versions of the following libraries. However, if they are provided by the system and can be found with pkg-config
, then the system libraries will be used instead:
libcurl
— Used for network transfers.libgit2
— Used for fetching git dependencies.libssh2
— Used for SSH access to git repositories.libz
(AKA zlib) — Used by the above C libraries for data compression. (Rust code uses zlib-rs
instead.)It is recommended to use the vendored versions as they are the versions that are tested to work with Cargo.
First, you'll want to check out this repository
git clone https://github.com/rust-lang/cargo.git cd cargo
With cargo
already installed, you can simply run:
cargo build --release
Cargo is designed to be extensible with new subcommands without having to modify Cargo itself. See the Wiki page for more details and a list of known community-developed subcommands.
Cargo releases coincide with Rust releases. High level release notes are available as part of Rust's release notes. Detailed release notes are available in the changelog.
Found a bug? We'd love to know about it!
Please report all issues on the GitHub issue tracker.
See the Cargo Contributor Guide for a complete introduction to contributing to Cargo.
Cargo is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/).
In binary form, this product includes software that is licensed under the terms of the GNU General Public License, version 2, with a linking exception, which can be obtained from the upstream repository.
See LICENSE-THIRD-PARTY for details.