Cargo 是 Rust 的构建系统和包管理工具,同时 Rustacean 们使用 Cargo 来管理它们的 Rust 项目。Cargo 负责三个工作:构建你的代码,下载你代码依赖的库并编译这
些库。我们把你代码需要的库叫做“依赖(dependencies)”因为你的代码依赖他们。
  官方安装包的话,Rust 自带 Cargo

Cargo安装

  rust官方安装包自带Cargo,在终端检查你是否安装了 Cargo:

cargo --version

Cargo工程创建

  1、创建工程目录(例如/home目录下创建)

mkdir  projects

  2、进入/home/projects目录,然后新建Cargo工程

cd /home/projects/
cargo new hello_world --bin

  这个命令传递了 --bin 参数因为我们的目标是直接创建一个可执行程序,而不是一个库。Cargo 为我们创建了两个文件和一个目录:一个 Cargo.toml  (该文件首字母C 必须大写,同时该文件必须与src放置于同级目录,否则运行报错) 和一个包含了 main.rs 文件的 src 目录。

关于Cargo.toml:确保 Cargo.toml 的 C 是大写的,否则 Cargo 不知道如何处理配置文件。这个文件使用TOML(Tom's Obvious, Minimal Language)格式。 TOML 类似于INI,不过有一些额外的改进之处,并且被用作 Cargo 的配置文件。

  3、编译(cargo build)

#cd hello_world/
#cargo build
Compiling hello_world v0.1.0 (/home/projects/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in .43s

  4、运行(cargo run)

# cargo run
Finished dev [unoptimized + debuginfo] target(s) in .02s
Running `target/debug/hello_world`
Hello, world!

  5、发布构建(cargo build --release )

  你的项目准备好发布了,可以使用 cargo build --release 来优化编译项目。这些优化可以让 Rust 代码运行的更快,不过启用他们会让程序花更长的时间编译。这也是为何这是两种不同的配置,一个为了开发,另一个构建提供给用户的最终程序。

# cargo build --release
Finished release [optimized] target(s) in .01s
# ls
Cargo.lock Cargo.toml src target

  运行完成后发现会生成Cargo.lock 文件以及target目录,Cargo 用 Cargo.lock 文件跟踪你程序的依赖。这里是 Hello World 项目的 Cargo.lock 文件。这个项目并没有依赖,所以内容有一点稀少。事实上,你自己甚至都不需要碰这个文件;仅仅让 Cargo 处理它就行了。到了这一步,就已经成功使用 Cargo 构建了 hello_world 。

关于Cargo.toml配置内容将另外说明;

【rust】Rust 的构建系统和包管理工具Cargo认识并初步使用(2)的更多相关文章

  1. 打包一沓开源的 C/C++ 包管理工具送给你!

    本文作者:HelloGitHub-ChungZH 博客地址:https://chungzh.cn/ 包管理器可以帮助你更方便地安装依赖关系,并决定所安装的版本,提高你的开发幸福感.许多语言都有自己的包 ...

  2. debian系统包管理工具aptitude

    注意:aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些.举例来说,aptitu ...

  3. [Todo]各种语言包管理工具

    看到一篇文章不错: http://harttle.com/2015/05/29/pkg-manager.html 包管理和构建系统是现代的软件开发团队中必不可少的工具,也是Linux软件系统的常见组织 ...

  4. 主流包管理工具npm、yarn、cnpm、pnpm之间的区别与联系——原理篇

    接触 node 之后,一直使用npm包管理工具, cnpm 一开始会用一些,但是并没有觉得比 npm 快得多,使用 cnpm 的时候还经常安装不成功,只能再用 npm 安装一遍,渐渐的就弃用了 cnp ...

  5. buckaroo 去中心化的c++包管理工具

    buckaroo 是一款去中心化的c++ 包管理工具,使用上,类似yarn(nodejs),cargo (rust) ,使用buckaroo 我们可以很容易集成一个大规模的项目 支持以下特性 直接从G ...

  6. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  7. NodeJS包管理工具——npm入门

    如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...

  8. linux--软件包管理工具

    linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...

  9. python版本管理工具pyenv和包管理工具pipenv

    一.pyenv版本管理工具 pyenv是一个python版本管理工具,可以实现轻松切换多个python版本 它可根据每个用户更改全局python版本,也可以为每个项目指定python版本,还可以管理v ...

随机推荐

  1. malloc和cmalloc

    void *malloc(size_t size); 分配内存,但不会初始化,未使用内存不一定是0: void *calloc(size_t numElements,size_t sizeOfElem ...

  2. 手把手教你搭建一个 Elasticsearch 集群

    为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎, ...

  3. HTML5实现绘制几何图形

    HTML5新增了一个<canvas.../>属性.该元素自身并不绘制图形,只是相当于一张空画布.如果开发者需要向<canvas.../>上绘制图形则必须使用JavaScript ...

  4. spark 2.3.3 的MLlib 使用API

    1.api官网 http://spark.apache.org/docs/2.3.3/ml-guide.html

  5. 第9周总结&实验报告7

    完成火车站售票程序的模拟. 要求:(1)总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过程延时1秒钟:(4)不能出现一票多卖或卖出负数号票的情况.一:实验代码 package first; ...

  6. Hibernate 日期映射 条件查询

    1. hql: ...and accopt_time > ?" 2. query.setDate Query query = session.createQuery(hql); int ...

  7. The order of a Tree

    The order of a Tree Problem Description As we know,the shape of a binary search tree is greatly rela ...

  8. python爬取b站排行榜

    爬取b站排行榜并存到mysql中 目的 b站是我平时看得最多的一个网站,最近接到了一个爬虫的课设.首先要选择一个网站,并对其进行爬取,最后将该网站的数据存储并使其可视化. 网站的结构 目标网站:bil ...

  9. PDFObject的使用(转)

    1.pdfobject.js官网:https://pdfobject.com/ 2.在html文件中引入这个文件,以pdfobject.min.js为例 1 <script type=" ...

  10. Linux中的各种锁及其基本原理

    Linux中的各种锁及其基本原理 1.概述 通过本文将了解到如下内容: Linux系统的并行性特征 互斥和同步机制 Linux中常用锁的基本特性 互斥锁和条件变量 2.Linux的并行性特征 Linu ...