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 构建工具
13,547,457 每月下载量
在 67,556 个crate(61 个直接使用) 中使用
36KB
608 行
autocfg
一个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_std
和set_no_std
添加到控制探针中#![no_std]
的使用。 - 当它们被设置时,使用
RUSTC_WRAPPER
和RUSTC_WORKSPACE_WRAPPER
。
- 将
-
1.1.0 (2022-02-07)
- 当它被设置时,使用
CARGO_ENCODED_RUSTFLAGS
。
- 当它被设置时,使用
-
1.0.1 (2020-08-20)
- 通过@adamreichold应用
RUSTFLAGS
以支持更多--target
场景。
- 通过@adamreichold应用
-
1.0.0 (2020-01-08)
- 🎉 发布1.0版本!🎉(没有破坏性更改)
- 添加
probe_expression
和emit_expression_cfg
以测试任意表达式。 - 添加
probe_constant
和emit_constant_cfg
以测试任意常量表达式。
-
0.1.7 (2019-10-20)
- 当探测
$TARGET != $HOST
时应用RUSTFLAGS
,主要针对sysroot,由@roblabla完成。
- 当探测
-
0.1.6 (2019-08-19)
- 由@leo60228添加
probe
/emit_sysroot_crate
。
- 由@leo60228添加
-
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目的。
许可
此项目受以下任一许可协议的许可:
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任您选择。