如何为目标设置货物不稳定选项?

8
我有一个名为.cargo/config.toml的文件,内容如下:
[unstable]
unstable-options = true
build-std = ["core", "alloc"]

但是我只需要build-std适用于一个目标(例如thumbv7em-none-eabihf)。
有没有办法明确地为一个目标声明它?
可能是这样的:
# wrong example, doesn't work apparently
[target.thumbv7em-none-eabihf.unstable]
build-std = ["core", "alloc"]

注意,我只是在谈论配置文件,我知道如何使用cargo执行参数进行配置。这是为了自动忽略除了提到的目标之外的build-std,例如默认的主机目标。
1个回答

3
截至2023年7月4日,仅使用内置的货物配置无法实现此目标。有关详细信息,请参阅背景部分。
解决方法:
您需要使用外部调用的货物来构建该目标,例如“core”和“alloc”。
cargo build --target thumbv7em-none-eabihf -Z build-std="core,alloc"

使用已安装的相关工具链和此测试程序进行测试:
#![feature(restricted_std)]

fn main() {
    loop {}
}

使用货物调用
cargo build --target thumbv7em-none-eabihf -Z build-std="std,panic_abort"

背景

经过一些实验和搜索,有一个关于cargo添加这个功能的开放问题在这里,但是进展似乎很慢,因为已经尝试了多种不同的方法。由于build-std仍然是不稳定的接口,只能在cargo的nightly版本中使用,仍然存在与其他特性的冲突以及一些未解决的已解决的与改变语义相关的PR。这种类型功能的跟踪问题在这里


很遗憾,这似乎不是一个解决方案,因为我只是在谈论配置文件,我知道如何使用cargo执行参数进行配置。它需要自动忽略除了提到的目标之外的build-std,例如默认的主机目标。 - Alex Koz.
很遗憾,这并不是一个解决方案,因为我只是在谈论配置文件,我知道如何使用货物执行参数进行配置。它需要自动忽略除了提到的目标之外的build-std,例如默认的主机目标。 - Alex Koz.
1
我已经更新了标题。 - Jade Bilkey
1
我已经更新了标题。 - Jade Bilkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接