2016-08-17 11 views
7

Jak mogę uzyskać ładunek do emisji LLVM-IR zamiast binarnego dla mojego projektu? Wiem, że możesz użyć flagi --emit=llvm-ir w rustc, ale przeczytałem kilka błędów Github, które pokazują, że niemożliwe jest przekazanie dowolnych flag kompilatora do ładunku.Jak emitować LLVM-IR z Cargo

Czy istnieje sposób, aby uzyskać ładunek do emisji LLVM-IR bezpośrednio?

Odpowiedz

10

Istnieje cargo rustc do przekazywania dowolnych flag kompilatora przez Cargo do rustc. Więc myślę:

cargo rustc -- --emit=llvm-ir 

jest to, co chcesz!

+0

To właśnie wykorzystuje [alternatywny plac zabaw] (https://github.com/integer32llc/rust-playground/blob/374c47f24b581f062bfec1de7e5e2dba1c23e9ad/ui/src/sandbox.rs#L234). – Shepmaster

1

EDYCJA: Zamiast tego powinieneś użyć odpowiedzi Jacoba; o wiele łatwiejsze i mniej hacky.

Utwórz projekt z ładunkiem normalnie, ale dodaj do niego flagę -v, aby wyświetlić szczegółowe wyniki. Komenda będzie miał wynik takiego:

[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 

Jeśli polecenie nie tworzy żadnego wyjścia, zrób zmianę gdzieś w kodzie projektu oszukać kompilator do odbudowania go, ponieważ będzie odbudować tylko wtedy, gdy wykryje zmianę jeden z plików.

Skopiuj polecenie rustc z wewnątrz `markerów na linii zaczynając od" Running "rustc ..." i dołącz do niego --emit=llvm-ir.

Spowoduje to utworzenie pliku .ll w folderze/target/debug.

Powiązane problemy