Crates.io | cargo-export |
lib.rs | cargo-export |
version | 0.2.5 |
source | src |
created_at | 2023-05-07 09:29:14.749557 |
updated_at | 2023-12-21 13:12:31.022751 |
description | Utility to export compiler artifacts from cargo build process |
homepage | https://github.com/bazhenov/cargo-export |
repository | https://github.com/bazhenov/cargo-export |
max_upload_size | |
id | 859029 |
size | 31,393 |
It's quite challenging to export secondary artifacts like tests and benchmark executables. Those kind of artifacts can be very valuable for different reasons:
For final artifacts we have target/(release|debug)/{crate-name}
, but test and benchmark executables are containing
hash like target/release/deps/app-25de5d28a523d3c2
. Moreover it changes every time compiler options are changed. For
this reason methods like find
and cp
doesn't work well for extracting such artifacts.
Thankfully, compiler provide service messages (cargo build --message-format=json
) which allows to list all the
artifacts generated by the compiler.
$ cargo install cargo-export
export all test binaries to target/tests
directory
$ cargo export target/tests -- test
Under the hood this command will run cargo test --no-run --message-format=json
and copy all the generated binaries in the target/tests
directory.
export all benchmark binaries to target/bench
directory
$ cargo export target/bench -- bench
export all benchmark binaries to target/bench
directory and add postfix -main
to each executable
$ cargo export target/bench -t main -- bench
build and export benchmarks with a specific feature
$ cargo export target/bench -- bench --feature=my-feature
build and export benchmarks using nightly
$ cargo +nightly export target/bench -- bench