#cargo-build #build #cargo #cargo-test

bin+lib cargo-export

从 cargo 构建过程中导出编译器工件的小工具

6 个版本

0.2.5 2023 年 12 月 21 日
0.2.4 2023 年 12 月 21 日
0.1.0 2023 年 5 月 7 日

#300 in Cargo 插件

MIT 许可证

12KB
196

导出 cargo 编译器工件(测试、基准测试)

动机

导出像测试和基准测试可执行文件这样的二级工件相当具有挑战性。这些工件可能因不同原因而非常有价值

  1. 打包测试可执行文件到容器中以在以后的平台上运行
  2. 比较和分析性能基准的汇编

对于最终工件,我们有 target//(release|debug)/{crate-name},但测试和基准测试可执行文件包含哈希如 target/release/deps/app-25de5d28a523d3c2。此外,每次编译器选项更改时,它都会发生变化。因此,像 findcp 这样的方法在提取此类工件时效果不佳。

幸运的是,编译器提供服务消息(cargo build --message-format=json),这允许列出编译器生成的所有工件。

安装

$ cargo install cargo-export

使用

  • 将所有测试二进制文件导出到 target/tests 目录

    $ cargo export target/tests -- test
    

    在底层,此命令将运行 cargo test --no-run --message-format=json 并将所有生成的二进制文件复制到 target/tests 目录。

  • 将所有基准测试二进制文件导出到 target/bench 目录

    $ cargo export target/bench -- bench
    
  • 将所有基准二进制文件导出到 target/bench 目录,并为每个可执行文件添加后缀 -main

    $ cargo export target/bench -t main -- bench
    
  • 使用特定功能构建和导出基准测试

    $ cargo export target/bench -- bench --feature=my-feature
    
  • 使用夜间构建和导出基准测试

    $ cargo +nightly export target/bench -- bench
    

依赖项

~1–1.8MB
~34K SLoC