2016-08-17 2 views
7

Как я могу получить груз для испускания LLVM-IR вместо двоичного кода для моего проекта? Я знаю, что вы можете использовать флаг --emit=llvm-ir в rustc, но я прочитал некоторые проблемы Github, которые показывают, что невозможно передать произвольные флаги компилятора в груз.Как испустить LLVM-IR от Cargo

Есть ли какой-либо способ получить груз, чтобы излучать LLVM-IR напрямую?

ответ

10

Существует cargo rustc для передачи произвольных флагов компилятора через Cargo до rustc. Поэтому я думаю:

cargo rustc -- --emit=llvm-ir 

- это то, что вы хотите!

+0

Это то, что [альтернативная площадка использует] (https://github.com/integer32llc/rust-playground/blob/374c47f24b581f062bfec1de7e5e2dba1c23e9ad/ui/src/sandbox.rs#L234). – Shepmaster

1

EDIT: Вместо этого вы должны использовать ответ Якоба; намного проще и менее хаки.

Создайте проект с грузом нормально, но добавьте флаг -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 

Если команда не производит никакого вывода, внести изменения где-то в коде проекта, чтобы обмануть компилятор на восстановление его, так как он будет восстановить только если он обнаруживает изменение один из файлов.

Скопируйте команду rustc изнутри маркеров в строке, начинающейся с «Запуск« rustc ... »и добавьте к ней --emit=llvm-ir.

Это создаст файл .ll в папке/target/debug.

Смежные вопросы