如何告诉 Xcode 为 Swift 发出 IR(LLVM 位码)?
How to tell Xcode to emit IR (LLVM Bitcode) for Swift?
我希望 Xcode 将我的 Swift 源文件编译为位码 (IR) 而不是 Mach-O 对象。我知道您可以使用 emit-ir
标志调用 swift 编译器,但是将其添加到 "Other Swift Flags" 对我不起作用。该标志是为 swiftc
的初始调用设置的,但它不会在对 swift
的后续调用中显示为参数。结果我得到 Mach-O 64-bit object
个文件。
对于 Objective-C 我可以通过将 emit-llvm
标志添加到 clang
或启用 LTO 来简单地实现这一点。我应该为Swift做什么?
我是 运行 最新的 Xcode (7.3) 和 Swift 2.2.
编辑: 我想出了一个解决方法,我将 swift 编译器替换为将 -emit-bc
附加到参数列表并将其转发到的脚本swiftc
。但是,将它添加到 Xcode 中的 Swift 编译器标志中也不起作用。
你试过了吗swiftc -embed-bitcode
?
Swift 前端和 Swift 编译器都有一个不错的选项 -help-hidden
(clang 也有这个选项,顺便说一句)。
除了其他隐藏选项外,还有一个名为 -Xfrontend
的选项。
您可以使用它直接为 Swift 编译器 (swiftc
) 传递任何参数:-Xfrontend -emit-bc
.
它确实有效,但它会导致链接器错误,因为不再有目标文件。
我希望 Xcode 将我的 Swift 源文件编译为位码 (IR) 而不是 Mach-O 对象。我知道您可以使用 emit-ir
标志调用 swift 编译器,但是将其添加到 "Other Swift Flags" 对我不起作用。该标志是为 swiftc
的初始调用设置的,但它不会在对 swift
的后续调用中显示为参数。结果我得到 Mach-O 64-bit object
个文件。
对于 Objective-C 我可以通过将 emit-llvm
标志添加到 clang
或启用 LTO 来简单地实现这一点。我应该为Swift做什么?
我是 运行 最新的 Xcode (7.3) 和 Swift 2.2.
编辑: 我想出了一个解决方法,我将 swift 编译器替换为将 -emit-bc
附加到参数列表并将其转发到的脚本swiftc
。但是,将它添加到 Xcode 中的 Swift 编译器标志中也不起作用。
你试过了吗swiftc -embed-bitcode
?
Swift 前端和 Swift 编译器都有一个不错的选项 -help-hidden
(clang 也有这个选项,顺便说一句)。
除了其他隐藏选项外,还有一个名为 -Xfrontend
的选项。
您可以使用它直接为 Swift 编译器 (swiftc
) 传递任何参数:-Xfrontend -emit-bc
.
它确实有效,但它会导致链接器错误,因为不再有目标文件。