如何告诉Xcode为Swift发出IR(LLVM Bitcode)?

时间:2016-05-31 09:35:18

标签: xcode swift macos llvm bitcode

我希望Xcode将我的Swift源文件编译为bitcode(IR)而不是Mach-O对象。我知道你可以使用emit-ir标志调用swift编译器,但是将其添加到“Other Swift Flags”对我来说不起作用。该标志设置为swiftc的初始调用,但在后续对swift的调用中没有显示为参数。结果我收到Mach-O 64-bit object个文件。

对于Objective-C,我可以通过向emit-llvm添加clang标志或启用LTO来实现此目的。我应该怎么做Swift?

我正在使用Swift 2.2运行最新的Xcode(7.3)。

编辑:我想出了一个解决方法,我用一个脚本将swift编译器替换为-emit-bc并将其转发到swiftc。但是,将它添加到Xcode中的Swift编译器标志也不起作用。

2 个答案:

答案 0 :(得分:5)

Swift前端和Swift编译器都有一个很好的选项-help-hidden(clang也有这个选项,顺便说一句)。

除了其他隐藏选项外,还有一个名为-Xfrontend的选项。 您可以使用它直接为Swift编译器(swiftc)传递任何参数:-Xfrontend -emit-bc

它确实有效,但由于没有目标文件,它会导致链接器错误。

答案 1 :(得分:0)

您是否尝试过{{1}}?