| Crates.io | rustflags |
| lib.rs | rustflags |
| version | 0.1.7 |
| created_at | 2022-01-03 08:26:22.739628+00 |
| updated_at | 2025-03-03 23:57:36.529548+00 |
| description | Parser for CARGO_ENCODED_RUSTFLAGS |
| homepage | |
| repository | https://github.com/dtolnay/rustflags |
| max_upload_size | |
| id | 506962 |
| size | 70,716 |
CARGO_ENCODED_RUSTFLAGS is one of the environment variables provided by Cargo
to build scripts. It synthesizes several sources of flags affecting
Cargo's rustc invocations that build scripts might care about:
target.<triple>.rustflags and
target.<cfg>.rustflags and build.rustflags, including from the
project-specific Cargo config file and the Cargo config in the user's
CARGO_HOME.If a build script needs to make some rustc invocations, or needs to characterize aspects of the upcoming rustc invocation, it likely needs these flags.
[build-dependencies]
rustflags = "0.1"
This build script uses the cmake crate to compile some C code, and must
configure it with a particular C preprocessor #define if the Rust build is being
performed with sanitizers.
// build.rs
use rustflags::Flag;
use std::env;
use std::path::PathBuf;
fn main() {
let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
let lib_source_dir = manifest_dir.join("lib");
assert!(lib_source_dir.join("CMakeLists.txt").exists());
let mut builder = cmake::Config::new(lib_source_dir);
// Look for -Zsanitizer=address
for flag in rustflags::from_env() {
if matches!(flag, Flag::Z(z) if z == "sanitizer=address") {
builder.define("ENABLE_SANITIZERS", "ON");
builder.define("SANITIZERS", "address");
break;
}
}
builder.build();
}