【问题标题】:Link binary with static library in xcconfig在 xcconfig 中将二进制文件与静态库链接
【发布时间】:2013-10-06 19:24:49
【问题描述】:

我有一个 Xcode 项目,它本质上是一个内置于几个几乎相同目标中的应用程序。我已经将几乎所有的构建配置设置都移到了中心位置,但我不知道如何将针对静态库 (libMantle.a) 的链接移动到 xcconfig。我已经尝试过 -framework-l 标志,就像我用于其他各种库一样,但它们不起作用。有没有办法从 Link Binary with Libraries 窗格中获取 .a 文件,这样我就不需要手动保持所有目标同步?

【问题讨论】:

    标签: ios xcode clang xcode5


    【解决方案1】:

    想通了……

    假设您要链接到文件libGoogleAnalyticsServices.a。基本上,您应该在 .xcconfig 中拥有三样东西才能使其正常工作。

    首先,您要确保您的搜索路径中有库的路径。然后,您需要传递 两个 标志以使链接器满意 -L 与目录的路径,以及 -l 与库。

    把它们放在一起会得到类似的东西:

    LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/Vendor/Google Analytics"
    OTHER_LDFLAGS = $(inherited) -L"$(SRCROOT)/Vendor/Google Analytics" -lGoogleAnalyticsServices
    

    (你需要调整你的相对路径)

    对解决这个问题最有帮助的是 Log Navigator(Xcode 中的 command+8)。通过将静态库放入 Build Phases Link Binary With Libraries 面板并成功构建,您可以在日志中查看链接器步骤的详细信息,并查看它如何将 Analytics 库传递给编译器。从那里它只是在 xcconfig 中复制这些标志。

    【讨论】:

    • 请问您如何处理各种目标的源文件?您是否也将它们添加到 xcconfig 文件中?这甚至可能吗?
    • 特定于目标的 xcconfig 文件变得非常混乱,因为没有真正的好方法。不过,我很少有项目的目标具有截然不同的库依赖关系。你具体想做什么?
    • 我有一个有 9 个目标的项目。我只需要这些目标为每个目标设置一个单一的预处理器宏。主要是为不同的环境(开发、登台、生产)更改基础 API URL。所以我希望有一个文件来指定基本构建配置,包括所有要复制的源文件和资源。
    • 我想我在此回答了您的问题:gist.github.com/farski/9763168 或者至少我通常如何处理这个问题。没有承诺这是最好的方法,甚至是好方法。不过对我有用。
    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多