2016-05-31 19 views
5

Chcę Xcode skompilować moje pliki źródłowe Swift do Bitcode (IR) zamiast obiektów Mach-O. Jestem świadomy, że możesz wywołać szybki kompilator z flagą emit-ir, jednak dodanie tego do "Inne flagi Swift" nie działa dla mnie. Flaga jest ustawiona dla pierwszego połączenia z swiftc, ale nie jest wyświetlana jako argument w kolejnych połączeniach wykonanych na swift. W rezultacie otrzymuję pliki Mach-O 64-bit object.Jak przekazać Xcode do emisji IR (LLVM Bitcode) dla Swifta?

Dla Celu-C mogę to osiągnąć przez dodanie flagi emit-llvm do clang lub włączenie LTO. Co powinienem zrobić dla Swifta?

Używam najnowszego Xcode (7.3) z Swift 2.2.

EDIT: zorientowali się obejście gdzie wymienić szybki kompilator ze skryptu, który dołącza -emit-bc do listy argumentów i przekazuje go do swiftc. Jednak dodanie go do flag kompilatora Swift w Xcode również nie działa.

Odpowiedz

4

Frontend Swift i kompilator Swift mają niezłą opcję -help-hidden (clang ma również tę opcję, btw).

Oprócz innych ukrytych opcji jest jeden o nazwie -Xfrontend. Można go użyć do przekazania dowolnych parametrów bezpośrednio kompilatorowi Swift (swiftc): -Xfrontend -emit-bc.

To działa, ale prowadzi do błędów linkera, ponieważ nie ma już plików obiektów.

+1

Mam ten sam problem z moim obejściem, który jest w porządku dla moich celów. – Jonas

0

Czy próbowałeś już swiftc -embed-bitcode?

+1

Chociaż faktycznie tworzy to pośredni plik BC, ostateczny plik obiektowy nadal jest MachO, aczkolwiek z osadzonym bitcodem. – Jonas

Powiązane problemy