我写了一个Cargo helper命令,需要知道Rust / Cargo使用的默认目标三元组(我认为它与主机的目标三元组相同)。理想情况下,它应该是编译时常量。
ARCH
{{3}}不变,但不是完整三联。例如,它没有区分软浮动和硬浮动ARM ABI。
env!("TARGET")
是理想的,但它仅适用于构建脚本,而不是lib / bin目标。我可以使用build.rs
和动态源代码生成(将值写入.rs
中的OUT_DIR
文件)传递给lib,但是看起来只是为了得到一个无论如何编译器必须知道的字符串。
是否有更简单的方法来获取使用Cargo构建的lib / bin目标中的当前目标三元组?
答案 0 :(得分:2)
除了通过构建脚本之外,我认为这不是暴露的。如果没有“动态源代码生成”,那么在build.rs
中获得目标三元组的简洁方法是:
fn main() {
print!("{}", std::env::var("TARGET").unwrap());
}
和src/main.rs
:
const TARGET: &str = include_str!(concat!(env!("OUT_DIR"), "/../output"));
fn main() {
println!("target = {:?}", TARGET);
}
答案 1 :(得分:1)
构建脚本将一些additional output打印到文件中,因此您不能确定构建脚本仅将 Sub ReRunMacro()
Dim xMin As String
Dim lastRow As Long, i As Long
Dim ws As Worksheet
Dim validSheets() As Variant
Set ws = ActiveSheet
validSheets = Array("CNC Machining Cell 2", "CNC Grinding Cell", "CNC Turning Cell 1 & 3", "CNC Turning Cell 2")
If UBound(Filter(validSheets, ws.Name)) = -1 Then
Exit Sub
End If
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Do
For i = 1 To 14 Step 2
Cells(i, 1).Select
ActiveWindow.SmallScroll down:=1
Application.Wait (Now + TimeValue("0:00:02"))
If i = lastRow - 2 Or i = lastRow - 1 Then
i = 0
Cells(1, 1).Select
End If
Next i
Range("A1").Activate
Loop
End Sub
的输出打印出来。
相反,请在build.rs中尝试以下方法:
$TARGET
这将在构建脚本中获取fn main() {
println!(
"cargo:rustc-env=TARGET={}",
std::env::var("TARGET").unwrap()
);
}
环境变量的值并进行设置,以便在程序启动时可以访问它。
在我的main.rs中:
$TARGET
现在,我可以在程序中访问目标三元组了。如果您使用的是这种技术,则只会读取const TARGET: &str = env!("TARGET");
环境变量的值,而不会读取其他任何内容。