Compile and execute a rust build script to generate build attributes
This rules take the same arguments as rust_binary.
Example:
Suppose you have a crate with a cargo build script build.rs:
[workspace]/ hello_lib/ BUILD build.rs src/ lib.rs
Then you want to use the build script in the following:
hello_lib/BUILD:
package(default_visibility = ["//visibility:public"]) load("@io_bazel_rules_rust//rust:rust.bzl", "rust_binary", "rust_library") load("@io_bazel_rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script") # This will run the build script from the root of the workspace, and # collect the outputs. cargo_build_script( name = "build_script", srcs = ["build.rs"], # Data are shipped during execution. data = ["src/lib.rs"], # Environment variables passed during build.rs execution build_script_env = {"CARGO_PKG_VERSION": "0.1.2"}, ) rust_library( name = "hello_lib", srcs = [ "src/lib.rs", ], deps = [":build_script"], )
The hello_lib target will be build with the flags and the environment variables declared by the build script in addition to the file generated by it.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | The target name for the underlying rule | none |
| crate_name | Name of the crate associated with this build script target. | "" |
| crate_features | A list of features to enable for the build script. | [] |
| version | The semantic version (semver) of the crate. | None |
| deps | The dependencies of the crate defined by crate_name. | [] |
| build_script_env | Environment variables for build scripts. | {} |
| kwargs | Forwards to the underlying rust_binary rule. | none |