【rust】Rust 的构建系统和包管理工具Cargo认识并初步使用(2)
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配置内容将另外说明;
最新文章
- Binder In Native
- imageNamed和imageWithContentsOfFile区别
- LeetCode 168. Excel Sheet Column Title
- Android九宫格界面实现点击每个格点击跳转界面
- jumplist和changlist
- on the wane
- HDU 2196 树形DP Computer
- 修改UITextfield的Placeholder字体的颜色
- Linux 查看支持的语言,日期,时间,计算器
- SharePoint 2013 中将 HTML文件转换为母版页
- 在一个view类里面获取viewcontroller
- sql2012笔记
- layer.photos()异步修改图片地址后显示异常
- Python数据分析-知识宝藏
- JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
- ReSharper 自动选中
- BZOJ1066 [SCOI2007]蜥蜴 网络流 最大流 SAP
- YII实现restful,postman进行接口测试
- Codeforces Round #503 (by SIS, Div. 1)E. Raining season
- 贝尔金(Belkin)7231-4P tftp救砖
热门文章
- malloc和cmalloc
- 【Linux开发】【Qt开发】arm-linux-gnueabihf-gdb versus gdb-multiarch
- 第五周课程总结&;实验报告(三)
- [转帖]IDC发布2018下半年中国公有云市场报告
- 由于;引发的Oracle的BadSqlExecption
- S-Nim HDU 1536 博弈 sg函数
- CF682C Alyona and the Tree
- [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)
- 高性能迷你React框架anujs1.1.3发布
- SCUT - 216 - 宝华科技树