14 个版本 (5 个稳定版)

使用旧Rust 2015

1.3.0 2024年5月3日
1.2.0 2024年3月25日
1.1.0 2022年2月7日
1.0.1 2020年8月21日
0.0.1 2018年5月30日

#17 in 构建工具

Download history 2990832/week @ 2024-05-02 2911692/week @ 2024-05-09 2961686/week @ 2024-05-16 2826479/week @ 2024-05-23 3113141/week @ 2024-05-30 3002672/week @ 2024-06-06 3231871/week @ 2024-06-13 3085016/week @ 2024-06-20 2956493/week @ 2024-06-27 2859708/week @ 2024-07-04 3185504/week @ 2024-07-11 3138660/week @ 2024-07-18 3197855/week @ 2024-07-25 3308001/week @ 2024-08-01 3632660/week @ 2024-08-08 2824654/week @ 2024-08-15

13,547,457 每月下载量
67,556 个crate(61 个直接使用) 中使用

Apache-2.0 OR MIT

36KB
608

autocfg

autocfg crate autocfg documentation minimum rustc 1.0 build status

一个Rust库,用于构建脚本根据编译器支持自动配置代码。代码片段会动态测试,看rustc是否会接受它们,而不是硬编码特定的版本支持。

用法

将此添加到您的 Cargo.toml

[build-dependencies]
autocfg = "1"

然后在您的 build.rs 脚本中使用它来检测编译器功能。例如,要测试128位整数支持,可能看起来像

extern crate autocfg;

fn main() {
    let ac = autocfg::new();
    ac.emit_has_type("i128");

    // (optional) We don't need to rerun for anything external.
    autocfg::rerun_path("build.rs");
}

如果类型测试成功,这将向Cargo写入一条 cargo:rustc-cfg=has_i128 行,这相当于Rust参数 --cfg has_i128。然后在您的Rust代码的其余部分,您可以在应仅当编译器支持时使用的代码上添加 #![cfg(has_i128)] 条件。

发布说明

  • 1.3.0 (2024-05-03)

    • 为直接控制将被测试编译的代码,添加 probe_raw
    • 在查询rustc版本信息时使用包装器。
  • 1.2.0 (2024-03-25)

    • no_stdset_no_std 添加到控制探针中 #![no_std] 的使用。
    • 当它们被设置时,使用 RUSTC_WRAPPERRUSTC_WORKSPACE_WRAPPER
  • 1.1.0 (2022-02-07)

    • 当它被设置时,使用 CARGO_ENCODED_RUSTFLAGS
  • 1.0.1 (2020-08-20)

    • 通过@adamreichold应用RUSTFLAGS以支持更多--target场景。
  • 1.0.0 (2020-01-08)

    • 🎉 发布1.0版本!🎉(没有破坏性更改)
    • 添加probe_expressionemit_expression_cfg以测试任意表达式。
    • 添加probe_constantemit_constant_cfg以测试任意常量表达式。
  • 0.1.7 (2019-10-20)

    • 当探测$TARGET != $HOST时应用RUSTFLAGS,主要针对sysroot,由@roblabla完成。
  • 0.1.6 (2019-08-19)

    • 由@leo60228添加probe/emit_sysroot_crate
  • 0.1.5 (2019-07-16)

    • 屏蔽了来自新rustc的一些警告。
  • 0.1.4 (2019-05-22)

    • std/no_std探测的级别从错误改为警告。
    • 提高rustc引导兼容性。
  • 0.1.3 (2019-05-21)

    • 自动检测是否需要为$TARGET添加#![no_std]
  • 0.1.2 (2019-01-16)

    • 添加rerun_env(ENV)以打印cargo:rerun-if-env-changed=ENV
    • 添加rerun_path(PATH)以打印cargo:rerun-if-changed=PATH

最小Rust版本策略

此crate最低支持的rustc版本是1.0.0。兼容性是其存在的全部原因,因此此crate在提高此要求方面将非常谨慎。如果认为这是必要的,它将被视为一个重大的破坏性更改,用于semver目的。

许可

此项目受以下任一许可协议的许可:

任您选择。

无运行时依赖