7 个版本

0.1.6 2024 年 4 月 17 日
0.1.5 2024 年 3 月 26 日
0.1.4 2023 年 7 月 15 日
0.1.3 2023 年 3 月 3 日
0.1.0 2022 年 1 月 3 日

#152 in 构建工具

Download history 1855/week @ 2024-04-26 2371/week @ 2024-05-03 2506/week @ 2024-05-10 2651/week @ 2024-05-17 2691/week @ 2024-05-24 5420/week @ 2024-05-31 4129/week @ 2024-06-07 2407/week @ 2024-06-14 2296/week @ 2024-06-21 3033/week @ 2024-06-28 2420/week @ 2024-07-05 1853/week @ 2024-07-12 1512/week @ 2024-07-19 2629/week @ 2024-07-26 2826/week @ 2024-08-02 1735/week @ 2024-08-09

9,001 个月下载量
用于 7 个 crate (4 直接)

MIT/Apache 协议

49KB
1K SLoC

CARGO_ENCODED_RUSTFLAGS 的解析器

github crates.io docs.rs build status

CARGO_ENCODED_RUSTFLAGS 是 Cargo 为构建脚本提供的环境变量之一。它综合了影响 Cargo 的 rustc 调用的多个标志来源

  • 通过 RUSTFLAGS 环境变量传递的标志
  • Cargo 配置条目在 target.<triple>.rustflagstarget.<cfg>.rustflags 以及 build.rustflags 中,包括来自项目特定的 Cargo 配置文件和用户 CARGO_HOME 中的 Cargo 配置

如果构建脚本需要执行一些 rustc 调用,或者需要描述即将进行的 rustc 调用的某些方面,它可能需要这些标志。

[build-dependencies]
rustflags = "0.1"

示例

此构建脚本使用 cmake crate 编译一些 C 代码,如果 Rust 构建使用 sanitizers 进行,则必须使用特定的 C 预处理器 #define 来配置它。

// 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();
}

许可证

根据您的选择,许可协议为 Apache License, Version 2.0MIT 许可证
除非您明确说明,否则根据 Apache-2.0 许可证定义的任何有意提交以包含在此 crate 中的贡献,均应按上述方式双重许可,而无需附加条款或条件。

无运行时依赖