如何从Cargo

时间:2016-08-17 19:11:48

标签: rust llvm-ir rust-cargo

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

我有没有办法让货物直接发射LLVM-IR?

2 个答案:

答案 0 :(得分:16)

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

cargo rustc -- --emit=llvm-ir

是你想要的!

答案 1 :(得分:2)

编辑:你应该使用雅各布的答案;更轻松,更少hacky。

正常使用货物构建项目,但添加-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`sackc ...”开头的行上的`markers中复制rustc命令,并将--emit=llvm-ir附加到它。

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