Builds FAM from one of two possible sources: - Metadata in the crate manifest (usually Cargo.toml) - Flipper.toml near by crate manifest
Uses cargo metadata
.
Cargo.toml: ```toml [package] build = "build.rs"
[package.metadata.fam] main = "init" name = "Hello, Flipper" # optional, default is crate name
[build-dependencies.fam-build] package = "flipper0-fam-build" version = "*" ```
build.rs: ```rust fn main() { let fam = fambuild::manifest().unwrap(); let path = fam.savetooutdir().unwrap(); // or... fam.save_to(some other path)
println!("Exported FAM path: {}", path.display());
} ```
main
Metadata field package.metadata.fam.main
is required by default.
But it's optional if feature optional_entry_point
enabled.
That optionality needed in cases when this used in couple with macro crate that also writes to manifest. So you can omit package.metadata.fam.main
in that case.