【问题标题】:iOS Linking library in xcconfigxcconfig 中的 iOS 链接库
【发布时间】:2015-08-28 10:25:55
【问题描述】:

我正在建立一个图书馆。我希望它编译并包含另一个(即 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 中删除它时它消失了),但看不到 -lGoogleConversionTracking 时存在我把我的库放在构建阶段。

(如果我从构建阶段完全移除面板,我会发生更多事情,比如 libtool 中什么都没有,但在某种程度上它可能是有意义的,这没什么大不了的)

提前谢谢你!

【问题讨论】:

  • 我再次测试了在 Link Binary With Library 的构建阶段添加库与不添加库之间的差异。从命令行比较整个构建日志。唯一的区别是 -lGoogleConversionTracking 是否在 libtool 的命令行中。我真的很讨厌 xcode ;x

标签: ios static-libraries xcodebuild


【解决方案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)

【讨论】:

  • 这个话题已经很晚了,但只是想确认 Xcode 11 上仍然存在这种行为并明确声明确实是传递给 libtool 并导致包含静态库的 OTHER_LIBTOOLFLAGS
【解决方案2】:

就我而言,它看起来像:

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

但我的库放置在与*.xcodeproj-file 相同级别的源文件夹中。

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

可以通过方案中的脚本阶段解决此问题。

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

【讨论】:

  • 您好!谢谢您的回答。我试图在那里手动复制lib进行测试并更改为路径。但它不起作用:(
  • @SeikoTheWiz 你能展示一下你项目中标签BuildSettings (LIBRARY_SEARCH_PATHS) 的外观吗? (截图)
  • 显示它使用的是 xcconfig 文件。 (我知道我可以选择一些东西,然后删除它们以使用默认或 xcconfig 设置)
  • 加了你的赏金,因为你帮了我,反正我也拿不回来;)
猜你喜欢
  • 2013-10-06
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多