4 个版本 (2 个重大更改)
0.3.2 | 2019 年 9 月 7 日 |
---|---|
0.3.1 |
|
0.3.0 | 2019 年 3 月 21 日 |
0.2.0 | 2018 年 11 月 29 日 |
0.1.0 | 2018 年 10 月 25 日 |
#413 in Cargo 插件
25KB
442 行
cargo-with
cargo-with
是一个 cargo 子命令,它使得通过 cargo run
、cargo build
或 cargo bench
生成构建工件,并通过其他工具如 gdb
、strace
、valgrind
、rr
或您能想到的其他任何工具来运行它变得容易。
安装
使用常规的 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