在xcconfig中将二进制文件与静态库链接

far*_*ski 5 xcode clang ios xcode5

我有一个Xcode项目,它本质上是一个内置于几个几乎相同的目标的应用程序.我已经在中心位置移动了几乎所有的构建配置设置,但我无法弄清楚如何将静态库(libMantle.a)的链接移动到xcconfig.我已经尝试了-framework-l标志,就像我用于其他各种库,但它们不起作用.有没有办法从链接二进制文件库中获取.a文件,所以我不需要手动保持所有目标同步?

far*_*ski 6

弄清楚了...

假设您要链接文件libGoogleAnalyticsServices.a。在 .xcconfig 中基本上应该有三样东西才能让它工作。

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

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

LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/Vendor/Google Analytics"
OTHER_LDFLAGS = $(inherited) -L"$(SRCROOT)/Vendor/Google Analytics" -lGoogleAnalyticsServices
Run Code Online (Sandbox Code Playgroud)

(您需要根据相对路径进行调整)

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