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