如何从 Cargo 发出 LLVM-IR

How to emit LLVM-IR from Cargo

如何让 cargo 为我的项目发出 LLVM-IR 而不是二进制文件?我知道您可以在 rustc 中使用 --emit=llvm-ir 标志,但我读过一些 Github 问题,这些问题表明不可能将任意编译器标志传递给 cargo。

有什么方法可以让货物直接发出 LLVM-IR 吗?

编辑:您应该改用 Jacob 的回答;更容易,更少 hacky。

正常使用 cargo 构建项目,但添加 -v 标志以显示详细输出。该命令将产生如下结果:

casey@casey-ubuntu:~/Documents/project$ cargo build -v
   Fresh aster v0.22.1
   Fresh num-traits v0.1.34
   Fresh itoa v0.1.1
   ...
Compiling project v0.1.0 (file:///home/casey/Documents/project)
 Running `rustc src/main.rs --crate-name ...`
Finished debug [unoptimized + debuginfo] target(s) in 3.54 secs

如果该命令没有产生输出,请在项目代码中的某处进行更改以诱使编译器重建它,因为它只会在检测到其中一个文件发生更改时才重建。

从以 "Running `rustc..." 开头的行上的 ` 标记内复制 rustc 命令并向其附加 --emit=llvm-ir

这将在您的 /target/debug 文件夹中生成一个 .ll 文件。

cargo rustc 通过 Cargo 将任意编译器标志传递给 rustc。所以我认为:

cargo rustc -- --emit=llvm-ir

就是你想要的!