我希望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编译器标志也不起作用。
答案 0 :(得分:5)
Swift前端和Swift编译器都有一个很好的选项-help-hidden
(clang也有这个选项,顺便说一句)。
除了其他隐藏选项外,还有一个名为-Xfrontend
的选项。
您可以使用它直接为Swift编译器(swiftc
)传递任何参数:-Xfrontend -emit-bc
。
它确实有效,但由于没有目标文件,它会导致链接器错误。
答案 1 :(得分:0)
您是否尝试过{{1}}?