gpt4 book ai didi

rust - 如何找到当前 Rust 编译器的默认 LLVM 目标三元组?

转载 作者:行者123 更新时间:2023-11-29 08:29:26 25 4
gpt4 key购买 nike

我要override a build script ,这意味着添加一个如下所示的配置部分:

[target.x86_64-unknown-linux-gnu.foo]
rustc-link-search = ["/path/to/foo"]
rustc-link-lib = ["foo"]
root = "/path/to/foo"
key = "value"

但我使用的是 Mac,所以 x86_64-unknown-linux-gnu不是正确的目标三元组。

我如何发现当前正在使用哪个目标 triple rustc 或 cargo?

rustc --print cfg打印似乎与三元组不对应的值列表(特别是那里没有 unknown)。

rustc --print target-list显示所有可用目标;我只想要默认值。

最佳答案

cargo 使用 rustc -vV 检测默认目标三元组 ( source )。我们可以做同样的事情:

use std::process::Command;

use anyhow::{format_err, Context, Result};
use std::str;

fn get_target() -> Result<String> {
let output = Command::new("rustc")
.arg("-vV")
.output()
.context("Failed to run rustc to get the host target")?;
let output = str::from_utf8(&output.stdout).context("`rustc -vV` didn't return utf8 output")?;

let field = "host: ";
let host = output
.lines()
.find(|l| l.starts_with(field))
.map(|l| &l[field.len()..])
.ok_or_else(|| {
format_err!(
"`rustc -vV` didn't have a line for `{}`, got:\n{}",
field.trim(),
output
)
})?
.to_string();
Ok(host)
}

fn main() -> Result<()> {
let host = get_target()?;
println!("target triple: {}", host);
Ok(())
}

关于rust - 如何找到当前 Rust 编译器的默认 LLVM 目标三元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com