iOS链接库在xcconfig中

时间:2015-08-28 10:25:55

标签: ios static-libraries xcodebuild

我正在建立一个图书馆。我希望它能够编译并包含另一个(这是googleConversion),但我需要使用xcconfig文件(因为对于某些构建我想不包括库)

以下:Link binary with static library in xcconfig

所以我做的是添加我的xcconfig文件:

LIBRARY_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/../Vendors/Analytics/GoogleConversion/GoogleConversionTrackingSDK-iOS-3.2.0 
OTHER_LDFLAGS =$(inherited) -ObjC -L$(PROJECT_DIR)/../Vendors/Analytics/GoogleConversion/GoogleConversionTrackingSDK-iOS-3.2.0 -lGoogleConversionTracking

让我在没有警告的情况下编译,但不要在我的.a

中包含该库

我设法做到的唯一方法是在Link Binary With Library的构建阶段添加库。

但如果我想能够自动化我的不同类型的构建,那么我无法做到这一点

听起来应该很简单;(

也许其他一些配置阻止这些线路工作?

我尝试检查我的日志,我可以在我的"检查依赖项"在Libtool导出路径中,我可以看到我的OTHER_LDFLAGS的解析路径(当我从我的xcconfig中删除它时会消失)但不会在我将我的lib置于构建阶段时存在的-lGoogleConversionTracking。

(我有更多的事情发生,如果我从构建阶段完全删除面板,就像libtool中没有任何东西一样,但它在某种程度上是有意义的并且它不是什么大问题)

提前谢谢!

2 个答案:

答案 0 :(得分:1)

最后得到它!!!!

因为在xcode 6中解决了旧的xcode错误。

https://tarunsharmaios.wordpress.com/2014/09/12/xcode6-static-library-linking-broken/

  

在构建静态库时,BlockquoteXcode将不再将构建设置OTHER_LDFLAGS中的选项传递给libtool,在构建任何其他类型的产品时,它也不会将OTHER_LIBTOOLFLAGS中的选项传递给Mach-O链接器。以前,两个设置中的所有选项都将传递给两个工具。确保选项位于正在构建的产品类型,静态库或其他组件的正确构建设置中。 (4285249)

答案 1 :(得分:0)

就我而言,它看起来像:

LIBRARY_SEARCH_PATHS = $(inherited) "${SRCROOT}/thirdparties/CardIO-5.1.0"
OTHER_LDFLAGS = $(inherited) -ObjC -lz -lc++ -lCardIO

但我的libs放在源文件夹内与*.xcodeproj - 文件相同的级别。

我认为使用"\..\"的路径不适用于xcode。

可以使用您的方案中的脚本阶段解决此问题。

  • 通过Product->Scheme->Manage Schemes打开您的计划。
  • New run script action
  • 中添加Build->Pre-actions
  • 脚本应将文件libGoogleConversionTracking.a复制到$ {SRCROOT}
  • LIBRARY_SEARCH_PATHS文件
  • 中设置*.xcconfig的新路径