![]()
A cargo wrapper that executes a post build script after a successful build.
cargo install cargo-post
Execute cargo CMD [ARGS] and run post_build.rs afterwards:
cargo post CMD [ARGS]
The post_build.rs is only run if CMD is a build command like build or xbuild.
In workspaces, you might have to pass a --package argument to cargo build to specify the package for which the post build script should be run.
Build the crate and run post_build.rs afterwards:
cargo post build
Build the crate in release mode and run post_build.rs afterwards:
cargo post build --release
Builds the crate using cargo-xbuild:
cargo post xbuild
Check the crate without executing post_build:
cargo post check
The build script is not executed because cargo check is not a build command. The same behavior occurs for cargo post doc or cargo post update.
Post-build scripts are similar to cargo build scripts, but they get a different set of environment variables:
CRATE_BUILD_COMMAND: The full cargo command that was used for building without post
cargo post build --release, the environment variable has the value cargo build --release.CRATE_MANIFEST_DIR: The directory where the Cargo.toml of the crates lives.CRATE_MANIFEST_PATH: The path to the Cargo.toml of the crates.CRATE_PROFILE: debug or release, depending on whether --release was passed in the build command.CRATE_TARGET: The full content of what was passed as --target or the empty string if no --target was passed.CRATE_TARGET_TRIPLE: The target triple of the passed --target or the empty string if no --target was passed.
cargo post xbuild --target /some/path/to/your/target-x86_64.json this environment variable has the value target-x86_64.CRATE_TARGET_DIR: The path to the target directory of your crate.CRATE_OUT_DIR: The path to the directory where cargo puts the compiled binaries. This path is constructed by appending CRATE_TARGET_TRIPLE and CRATE_PROFILE to CRATE_TARGET_DIR.Dependencies for post build scripts can be specified in a [package.metadata.cargo-post.dependencies] table in your Cargo.toml.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.