【问题标题】:Can the -ObjC flag be applied selectively to static libraries?-ObjC 标志可以选择性地应用于静态库吗?
【发布时间】:2014-11-11 10:49:29
【问题描述】:

TL;DR

如何使-ObjC 链接器标志针对特定的静态库,而不是所有我要链接的静态库,以避免未使用的目标文件与我的应用程序链接?


太长了;读过

因此,您正在开发一个新的 iOS 应用程序,并添加了您自己开发的“objcutil”静态库,其中包含各种有用的 Objective-C 类(未实现为类别)来执行过去有用的各种事情。到目前为止,一切都很好,只有实用程序库中引用的那些目标文件与应用程序链接。

然后你决定集成Google Maps SDK,它希望你使用-ObjC Other Linker Flags 并且突然之间无法解决实用程序库中的依赖关系,因为你没有' t 配置 Xcode 以链接到这些库。

好的,我可以很容易地解决缺少的依赖项,但是您现在拥有不需要的未使用的目标文件和库依赖项,并且您希望比这更整洁。

那么如何避免强迫症过载呢?


来自ld 联机帮助页的一些参考:

-ObjC 加载定义Objective C 类或类别的静态归档库的所有成员。此选项不适用于动态 共享库。


  • Xcode 版本:5.1.1
  • OSX 版本:10.9.4

【问题讨论】:

    标签: ios objective-c xcode linker dependencies


    【解决方案1】:

    好的,所以答案是使用-force_load 而不是-ObjC,因为-force_load 更专注。

    所以WRT到谷歌地图SDK,如果你按照说明将静态框架复制到应用项目目录中,那么框架将在项目根目录中,你可以删除 @987654325 @ 来自 Other Linker Flags 并将其替换为

    -force_load GoogleMaps.framework/Versions/Current/GoogleMaps:

    没有什么需要改变的。

    对于其他库,您需要使用完整的静态库路径作为-force_load 的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多