2016-08-17 8 views
7

私のプロジェクトのバイナリの代わりにLLVM-IRを発行するにはどうすればよいですか? rustc--emit=llvm-irフラグを使用できますが、貨物に任意のコンパイラフラグを渡すことは不可能であることを示すいくつかのGithubの問題を読んでいます。貨物からLLVM-IRを放出する方法

LLVM-IRを直接排出する方法はありますか?

答えて

10

カーゴを介して任意のコンパイラフラグをrustcに渡すためのcargo rustcがあります。だから私は思う:

cargo rustc -- --emit=llvm-ir 

あなたは何をしたいですか?

+0

これは[代替プレイグランドで使用する](https://github.com/integer32llc/rust-playground/blob/374c47f24b581f062bfec1de7e5e2dba1c23e9ad/ui/src/sandbox.rs#L234)です。 – Shepmaster

1

編集:代わりにJacobの答えを使用する必要があります。はるかに簡単で、よりハッキリではありません。

通常は貨物でプロジェクトをビルドしますが、詳細出力を表示するには-vフラグを追加してください。コマンドは出力を生成しません場合、それはの変化を検出した場合、それだけで再構築されますから、それを再構築にコンパイラをだまして、プロジェクトのコードのどこかに変更を加える

[email protected]:~/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 

:コマンドは、このような結果になりますファイルの1つ。

rustcコマンドを「Running`s rustc ...」で始まる行のマーカーの中からコピーし、--emit=llvm-irを追加します。

これは/ target/debugフォルダに.llファイルを生成します。

関連する問題