【问题标题】:Creating a static library using Swift with external cocoa pods dependencies使用 Swift 和外部 cocoa pod 依赖项创建静态库
【发布时间】:2015-01-08 19:05:13
【问题描述】:

我在创建使用外部可可豆库 (SSZipArchive) 的快速静态库时遇到问题。

我收到以下错误:

error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character `X' in: -Xlinker
Usage: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-sacLT] [-no_warning_for_no_symbols]
Usage: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -dynamic [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-o output] [-install_name name] [-compatibility_version #] [-current_version #] [-seg1addr 0x#] [-segs_read_only_addr 0x#] [-segs_read_write_addr 0x#] [-seg_addr_table <filename>] [-seg_addr_table_filename <file_system_path>] [-all_load] [-noall_load]​

我不知道为什么会这样。

【问题讨论】:

    标签: ios swift cocoa static-libraries


    【解决方案1】:

    您不能创建静态 Swift 库。

    这是一个“错误”,但后来 Apple 工程师决定声明这是预期行为。我需要自己制作静态库,我目前正在做 SOL。

    Xcode 不支持构建包含 Swift 代码的静态库。

    【讨论】:

    • 我认为他们正在等待 Swift 变得稳定。由于静态库很少更新,如果您使用 Swift 1 发布 .a 并且使用 Swift 1.2 破坏某人的应用程序,这将是有风险的。
    • 这很有意义@Nirbhay - 您是否可以替代静态库来在项目之间共享代码?
    • @Zorayr 使用 Objective-C 不是你的选择吗?
    • @Zorayr 框架仅支持 iOS8+。因此,如果您不关心对 iOS 7 的支持,我认为它们是一个更好的选择。不过,我不确定 Swift 对框架的支持。
    • 直到现在它仍然不支持 Swift 中的静态库。并且框架在 iOS 7 中不起作用。无论如何,Apple 认为这不是他们的问题。
    【解决方案2】:

    @Aggressor 关于当前的事态是正确的,但即使(何时)Swift 确实允许创建静态库,你也不能这样做。第三方库绝不能合并到静态库中。如果消费者还包含这些库(或者如果另一个静态库包含),这会导致以后发生各种构建冲突。有关更多信息(以及指向更多信息的链接),请参阅this ObjC version of the question。如果 Swift 支持这一点,那将是同样的问题。最终的可执行文件应该将所有库链接在一起。

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 2011-07-24
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多