嵌入式内容包含使用Xcode 8 Beta的Swift代码

7
我正在开发一款使用Objective-C编写的命令行macOS应用程序,其中使用了其他第三方Swift库。我收到一个错误,提示“dyld: Library not loaded: @rpath/libswiftAppKit.dylib”。
之前的答案建议将“Embedded Content Contains Swift Code”标志设置为true。但是,在Xcode 8 beta中缺少此标志。
我尝试过“ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”,我相信这是Xcode 8的新标志。它也不起作用:(
有人尝试过使用Xcode 8 beta编译和执行具有以下特征的命令行应用程序吗? - 使用Objective-C开发 - 具有第三方Swift库依赖项
更新: 最终,我将“/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx”下的所有内容复制到可执行文件所在的文件夹中。虽然不是完美的解决方案,但它能够工作。
1个回答

27

查看Xcode 8 beta 2发布说明中提到的内容:

新的构建设置ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES取代了EMBEDDED_CONTENT_CONTAINS_SWIFT的使用。此设置表示Xcode应始终将Swift标准库嵌入已设置该项的目标中,无论目标是否包含Swift代码。使用此设置的典型情况是当目标直接使用或嵌入另一个包含Swift代码的产品时。

注意:EMBEDDED_CONTENT_CONTAINS_SWIFT已被弃用。(26158130)。


1
我和楼主有完全相同的情况,当我设置新推荐的标志时,我收到了警告“未运行swift-stdlib-tool:启用了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES,但产品类型'Command-line Tool'不是包装器类型。” 有其他人看到这个问题并知道如何解决吗?(XCode 8A218a)Swift 3.0 - tad
那么我们是否可以假设EMBEDDED_CONTENT_CONTAINS_SWIFT现在基本上总是开启的呢?那个其他开关的功能似乎不相等。 - Peter Johnson
但是,如果将ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES设置为true,则不要将libswiftAVFoundation.dylib复制到目标中。 - codiction

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接