Cargo 使用基础

Cargo 使用基础

Tips: 本文是阅读《Rust程序设计语言》1.3章的总结与思考。

Cargo简介

Cargo Rust 的构建系统和包管理器。

关系:

  • 可以没有 Cargo
  • Cargo 更方便,不需要让我们花时间在,构建代码,下载依赖库,编译依赖库等繁琐的事务上面
  • 官方提供的教程,会自带 Cargo安装
  • 类比于JavaMavengradleAntC++CMake

检查 Cargo 版本指令

cargo --version

使用Cargo创建项目

Tips: Cargo 有一个优点,不管用什么操作系统,命令都是一样的,所以我们不需要区分 Linux macOS Windows 提供平台特定的命令

请在 projects 目录下(你放代码的目录下,不一定叫projects),执行创建新项目指令

cargo new hello_cargo
cd hello_cargo
ls
  • 第一行命令新建了名为 hello_cargo 的目录。我们将项目命名为 hello_cargo,同时 Cargo 在一个同名目录中创建项目文件。

  • 进入 hello_cargo 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。

  • 它也在 hello_cargo 目录初始化了一个 Git 仓库,并带有一个.gitignore 文件。如果在现有的 Git 仓库中运行 cargo new,则不会生成 Git 文件;但你可以使用 cargo new --vcs=git 来无视此限制,强制生成 Git 文件。

关键点

  • 只有 src 目录下 Cargo 希望你存放源代码文件
  • 项目根目录只放说明文件 README,许可协议(license)信息、配置文件和其他跟代码无关的文件。
  • Cargo.toml 是配置文件,类似于 pom.xml,里面有项目的依赖,名称、版本,以及使用的 Rust 大版本号(edition,区别于 version)。

构建并运行Cargo项目

hello_cargo 目录下,输入下面的命令来构建项目:

$ cargo build
 Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs

这个命令会在 target/debug/hello_cargo 下创建一个可执行文件(在 Windows 上是 target\debug\hello_cargo.exe),而不是放在目前目录下。你可以使用下面的命令来运行它:

$ ./target/debug/hello_cargo # 或者在 Windows 下为 .\target\debug\hello_cargo.exe
Hello, world!

我们也可以使用 cargo run 命令,一次性完成代码编译和运行的操作:

$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/hello_cargo`
Hello, world!

注意这一次并没有出现表明 Cargo 正在编译 hello_cargo 的输出。Cargo 发现文件并没有被改变,就直接运行了二进制文件。如果修改了源文件的话,Cargo 会在运行之前重新构建项目,并会出现像这样的输出:

$ cargo run
   Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.33 secs
     Running `target/debug/hello_cargo`
Hello, world!

Cargo 还提供了一个名为 cargo check 的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件:

$ cargo check
   Checking hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs

为什么你会不需要可执行文件呢?通常,cargo check 要比 cargo build 快得多,因为它省略了生成可执行文件的步骤。如果你在编写代码时不断检查你的代码,那么使用 cargo check 命令可以加快这个过程!为此很多 Rustacean 编写代码时会定期运行 cargo check 以确保它们可以编译。当准备好使用可执行文件时才运行 cargo build

关键:

  • cargo run 是编译并运行
  • cargo build是构建项目
  • cargo check是检查代码确保可以编译(不产生可执行文件,速度快)
  • 编写代码时可能经常需要检查代码可以使用 cargo check
  • 构建的目录不在src目录下,项目根目录的/target/debug/target/release

发布构建项目

可以使用指令 cargo build --release 来优化编译项目。这会在 target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为了开发,你需要经常快速重新构建;另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。如果你要对代码运行时间进行基准测试,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。

关键:

  • 可以构建 debug 版项目和 release 版项目
  • debug 版项目和 release 版项目存放的路径不同
  • 两种不同版本构建项目各有优势,开发用 debug,发布用 release

最后

请把 rust 项目使用 cargo 当成一种习惯。

Tips: 对于简单项目而言,使用 Cargo 和直接使用 rustc 相比并没有太大的优势,但是在程序变得更加复杂时,它会证明自己的价值。对于拥有多个 crate 的复杂项目,交给 Cargo 来协调构建将简单得多。

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值