5
specify build dependency of a feature
(lemmy.blahaj.zone)
I don't understand the problem.
cargo new tt-build
cd tt-build
cargo new --lib opt-dep
echo 'pub const NAME: &str = "opt-dep";' > opt-dep/src/lib.rs
// build.rs
fn main() {
#[cfg(feature = "opt_dep_b_ft")]
println!("cargo:warning={}", opt_dep::NAME);
#[cfg(not(feature = "opt_dep_b_ft"))]
println!("cargo:warning=none");
}
// src/main.rs
fn main() {
#[cfg(feature = "opt_dep_r_ft")]
println!("Hello with {}", opt_dep::NAME);
#[cfg(not(feature = "opt_dep_r_ft"))]
println!("Hello with none");
}
# Cargo.toml
[package]
name = "tt-build"
version = "0.1.0"
edition = "2024"
[features]
default = ["opt_dep_b_ft", "opt_dep_r_ft"]
opt_dep_b_ft= ["dep:opt-dep"]
opt_dep_r_ft= ["dep:opt-dep"]
[dependencies]
opt-dep = { path = "./opt-dep", optional = true }
[build-dependencies]
opt-dep = { path = "./opt-dep", optional = true }
% cargo run --no-default-features 2>&1 | rg 'Hello|warn'
warning: tt-build@0.1.0: none
Hello with none
% cargo run 2>&1 | rg 'Hello|warn'
warning: tt-build@0.1.0: opt-dep
Hello with opt-dep
% cargo run --no-default-features --features=opt_dep_b_ft 2>&1 | rg 'Hello|warn'
warning: tt-build@0.1.0: opt-dep
Hello with none
% cargo run --no-default-features --features=opt_dep_r_ft 2>&1 | rg 'Hello|warn'
warning: tt-build@0.1.0: none
Hello with opt-dep