【问题标题】:Embedded Content Contains Swift Code with Xcode 8 Beta嵌入式内容包含带有 Xcode 8 Beta 的 Swift 代码
【发布时间】:2016-12-12 01:42:03
【问题描述】:

我正在开发一个命令行 macOS 应用程序(使用 Objective-C),它使用其他 3rd 方 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 开发 - 拥有 3rd 方 swift 库依赖项

更新:

我最终将“/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx”下的所有内容复制到可执行文件所在的文件夹中站立。不是一个完美的解决方案,但它有效。

【问题讨论】:

    标签: objective-c swift xcode compilation


    【解决方案1】:

    检查 Xcode 8 beta 2 发行说明中提到的这一点:

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

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

    【讨论】:

    • 我的情况与 OP 完全相同,当我设置新推荐的标志时,我收到警告“未运行 swift-stdlib-tool: ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 已启用,但产品类型 'Command -line Tool' 不是包装器类型。”其他人看到这个并知道如何解决它? (XCode 8A218a) Swift 3.0
    • 那么我们是否假设 EMBEDDED_CONTENT_CONTAINS_SWIFT 现在一直有效?另一个开关的功能似乎并不相同。
    • ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES设置为true,不要将libswiftAVFoundation.dylib复制到目标。
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多