#cargo-build #cargo #cargo-subcommand #run-command #crates #dependencies #cli

app cargo-with

一个第三方 cargo 扩展,通过工具如 gdb 运行构建工件

4 个版本 (2 个重大更改)

0.3.2 2019 年 9 月 7 日
0.3.1 2019 年 9 月 7 日
0.3.0 2019 年 3 月 21 日
0.2.0 2018 年 11 月 29 日
0.1.0 2018 年 10 月 25 日

#413 in Cargo 插件

GPL-3.0 许可证

25KB
442

cargo-with

cargo-with 是一个 cargo 子命令,它使得通过 cargo runcargo buildcargo bench 生成构建工件,并通过其他工具如 gdbstracevalgrindrr 或您能想到的其他任何工具来运行它变得容易。

Build Status crates.io

安装

使用常规的 cargo install 魔法进行安装

cargo install cargo-with

用法

cargo-with 的核心思想是利用 cargo <子命令> 与您的开发工作流程良好地配合。您只需在常规的 cargo 命令前添加 with <some-command> -- 即可。cargo-with 将尽力识别创建的工件并使用您的命令运行它。

例如,为了通过 gdb 运行您的二进制文件,请这样做:

cargo with gdb -- run

首先,将使用 cargo build 构建二进制文件,然后运行 gdb {bin} {args},其中 {bin} 是生成的工件路径,而 {args} 是在最后一个 -- 之后提供给 cargo 的参数(在这种情况下没有)。

参数移动

除了隐式地将工件路径和参数追加到提供的命令中,您还可以使用占位符来告知 cargo-with 它们应该放在哪里。这可以通过在提供的命令中使用 {bin}{args} 来完成。

cargo with "echo {args} {bin}" -- run -- --argument1 --argument2

在上面的命令中,{bin} 将由构建的工件的路径替换,而 {args} 将被替换为 --argument1 --argument2

区分多个二进制文件

当 cargo 构建您的项目时,通常会存在多个候选工件,尤其是在构建测试时。因此,在某些情况下,cargo-with 可能需要更多信息来选择您首选的候选者。这可以通过使用 --bin <binary-name>--example <example-name>--lib <lib-name>* 或 --test <unit-test-name>* 显式地指定给 cargo 哪个工件需要构建。

cargo with "gdb --args {bin} {args}" -- test --bin my-app
cargo with "gdb --args {bin} {args}" -- test --lib my-library
cargo with "gdb --args {bin} {args}" -- test --test my-unit-test
cargo with "gdb --args {bin} {args}" -- test --example my-example

*仅在使用 cargo test 时可用

检查测试

Cargo 将并行运行测试,因此运行 cargo with gdb -- test --lib my-library 可能不是您想要的。您可以通过给 cargo 提供测试函数的名称来检查单个测试;cargo with gdb -- test --lib my-library my_test_function_name

关于 cargo run 的说明

cargo run 的情况下,cargo-with 会隐式地将 run 替换为 build,以避免编译后执行二进制文件。

此包的未来

在 cargo 中存在一些待解决的问题,这可能会使得此包在未来变得不再必要。

贡献者

如果没有 @barskern 的许多贡献,这个包今天就不会是这个样子!

依赖关系

~4–13MB
~142K SLoC