当前位置:   article > 正文

cargo项目构建和包管理工具(配置cargo国内源)、Cargo.toml配置项参数说明、cargo run运行项目

cargo run

一、Cargo

官网: https://doc.rust-lang.org/cargo/index.html

cargo,简单来说就是python 的pip,nodejs 的npm,rust下的包管理工具。
Cargo用于组织Rust项目,比直接用rustc编译多个源文件更方便。

Rust 由 rustup 工具来安装和管理。 Rust 有一个 6 周的 快速发布过程 并且支持 大量的平台 ,所以任何时候都有很多 Rust 构建可用。 rustup 在 Rust 支持的每一个平台上以一致的方式管理这些构建, 并可以从 beta 和 nightly 发布渠道安装 Rust,且支持额外的交叉编译目标平台。

cargo new project_name --bin # 如果你想写一个普通的项目
cargo new lib_name --lib --vcs none # 如果你想写一个库
cargo build # 如果你想编译,默认会编译到target/debug/project_name下
cargo run # 如果你想编译并运行
cargo build --release # 如果你想发布,这会做很多优化,并编译到target/release/project_name下
cargo update # 如果你想修改Cargo.lock文件的话,运行它
cargo update -p rand # 如果你只是想更新rand版本的话,运行它
cargo test abc # 如果你想做test,运行它

1. 配置cargo国内源

原文链接:https://blog.csdn.net/u010953692/article/details/106464851
rust cargo指定国内镜像
参考URL: https://blog.csdn.net/setlilei/article/details/106204105?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

/root/.cargo新建配置文件config

[source.crates-io]
replace-with = 'tuna'

[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
  • 1
  • 2
  • 3
  • 4
  • 5
cargo install cargo-rls-install
cargo rls-install -i nightly-2020-03-19
rustc -V
  • 1
  • 2
  • 3

2. cargo来进行项目构建

  1. 执行 cargo new hello_cargo --bin ,执行完上面的操作之后,我们切换到hell_cargo目录下,可以看到一个文件(Cargo.toml)和一个目录(src),同时src目录下有一个main.rs文件。

  2. 执行 cargo run 就可以看到一行"hello world" 字符串出现在屏幕上

3. cargo run运行项目

可以使用 cargo run 在一个命令中同时编译并运行生成的可执行文件。当然,也可以使用 cargo run --release 运行发布版本。

demo:

cargo run -p aptos-node --release -- -f /opt/aptos/public_full_node.yaml 
  • 1

当我们通过cargo run运行程序时,会调用target目录下面的可执行程序。
-p: 指定运行target中哪个包
–release: 优化编译,编译时间会变长
–: 双虚线将参数与cargo分开,明确指定参数-f 是传递给应用程序。

因此如果需要将参数传递给应用程序,而不是cargo,需要使用两个虚线将cargo run与参数分开。

[root@dev release]# cargo run  -h
cargo-run
Run a binary or example of the local package

USAGE:
    cargo run [OPTIONS] [--] [args]...

ARGS:
    <args>...

OPTIONS:
    -q, --quiet                     Do not print cargo log messages
        --bin [<NAME>]              Name of the bin target to run
        --example [<NAME>]          Name of the example target to run
    -p, --package [<SPEC>...]       Package with the target to run
    -v, --verbose                   Use verbose output (-vv very verbose/build.rs output)
    -j, --jobs <N>                  Number of parallel jobs, defaults to # of CPUs
        --color <WHEN>              Coloring: auto, always, never
    -r, --release                   Build artifacts in release mode, with optimizations
        --frozen                    Require Cargo.lock and cache are up to date
        --profile <PROFILE-NAME>    Build artifacts with the specified profile
        --features <FEATURES>       Space or comma separated list of features to activate
        --locked                    Require Cargo.lock is up to date
        --all-features              Activate all available features
        --offline                   Run without accessing the network
        --config <KEY=VALUE>        Override a configuration value (unstable)
        --no-default-features       Do not activate the `default` feature
        --target <TRIPLE>           Build for the target triple
    -Z <FLAG>                       Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for
                                    details
        --target-dir <DIRECTORY>    Directory for all generated artifacts
        --manifest-path <PATH>      Path to Cargo.toml
        --message-format <FMT>      Error format
        --unit-graph                Output build graph in JSON (unstable)
        --ignore-rust-version       Ignore `rust-version` specification in packages
        --timings[=<FMTS>...]       Timing output formats (unstable) (comma separated): html, json
    -h, --help                      Print help information

Run `cargo help run` for more detailed information.
[root@dev release]# cargo run  --release -h
cargo-run
Run a binary or example of the local package

USAGE:
    cargo run [OPTIONS] [--] [args]...

ARGS:
    <args>...

OPTIONS:
    -q, --quiet                     Do not print cargo log messages
        --bin [<NAME>]              Name of the bin target to run
        --example [<NAME>]          Name of the example target to run
    -p, --package [<SPEC>...]       Package with the target to run
    -v, --verbose                   Use verbose output (-vv very verbose/build.rs output)
    -j, --jobs <N>                  Number of parallel jobs, defaults to # of CPUs
        --color <WHEN>              Coloring: auto, always, never
    -r, --release                   Build artifacts in release mode, with optimizations
        --frozen                    Require Cargo.lock and cache are up to date
        --profile <PROFILE-NAME>    Build artifacts with the specified profile
        --features <FEATURES>       Space or comma separated list of features to activate
        --locked                    Require Cargo.lock is up to date
        --all-features              Activate all available features
        --offline                   Run without accessing the network
        --config <KEY=VALUE>        Override a configuration value (unstable)
        --no-default-features       Do not activate the `default` feature
        --target <TRIPLE>           Build for the target triple
    -Z <FLAG>                       Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for
                                    details
        --target-dir <DIRECTORY>    Directory for all generated artifacts
        --manifest-path <PATH>      Path to Cargo.toml
        --message-format <FMT>      Error format
        --unit-graph                Output build graph in JSON (unstable)
        --ignore-rust-version       Ignore `rust-version` specification in packages
        --timings[=<FMTS>...]       Timing output formats (unstable) (comma separated): html, json
    -h, --help                      Print help information

Run `cargo help run` for more detailed information.
[root@dev release]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

二、Cargo.toml配置项参数说明

https://doc.rust-lang.org/cargo/reference/index.html#cargo-reference

1. 工作常用配置参数

[[bin]] 二进制目标

二进制目标是可执行程序,可以在编译后运行。 默认二进制文件名是src / main.rs,默认为包的名称。 其他二进制文件存储在SRC / BIN /目录中。 每个二进制文件的设置可以在Cargo.Toml中的[[Bin]]表中定制

您可以使用带有 --bin <bin-name>cargo run命令运行单个二进制文件。 cargo install 安装可用于将可执行文件复制到common 位置。

# Example of customizing binaries in Cargo.toml.
[[bin]]
name = "cool-tool"
test = false
bench = false

[[bin]]
name = "frobnicator"
required-features = ["frobnicate"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Cargo.toml中的[workspace]members起什么作用?

members相当于你自己可以在src中添加其它的二进制package,然后可以引用这些二进制package里的东西;

dependencies则是针对于library package

Cargo工作空间

这是为了开发大型程序,分治crate用的。

一,根cargo.toml内容

[workspace]

members = [
“adder”,
“add-one”,

]

二,adder里的cargo.toml内容

[package]
name = “adder”
version = “0.1.0”
authors = [“test test@qq.com”]
edition = “2018”

[dependencies]
add-one = { path = “…/add-one” }

三,main.rs内容

use add_one;

fn main() {
let num = 10;
println!(“Hello, world! {} plus one is {}!”, num, add_one::add_one(num));
}
四,Lib.rs内容

pub fn add_one(x: i32) -> i32 {
x + 1
}

#[cfg(test)]
mod tests {
use super:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/484677
推荐阅读
相关标签