可以将-ObjC标志select性地应用于静态库吗?
TL; DR
我怎样才能使-ObjC
链接器标志目标特定的静态库,而不是所有的静态库我链接,以避免未使用的目标文件被链接到我的应用程序?
太长; 阅读
所以你正在开发一个新的iOS应用程序,并且添加了你自己制作的“objcutil”静态库,它包含了各种有用的Objective-C类(没有被实现为类)来完成过去有用的各种事情。 到目前为止,这么好,只有实用程序库中引用的对象文件正在与应用程序链接。
然后,您决定集成Google Maps SDK ,希望您使用-ObjC
Other Linker Flags,并且实用程序库中的所有突然依赖项都无法parsing,因为您尚未将Xcodeconfiguration为链接到这些库。
好的,我可以很容易地解决缺less的依赖关系,但是现在您已经有了不需要的不需要的对象文件和库依赖关系,而且您想要比这更有点整齐。
那么如何避免OCD超负荷?
从ld
页的一些参考:
-ObjC加载定义Objective C类或类别的静态归档库的所有成员。 该选项不适用于dynamic共享库。
- Xcode版本:5.1.1
- OSX版本:10.9.4
好,所以答案是使用-force_load
而不是-force_load
,因为-force_load
更加专注。
因此,如果您按照说明将静态框架复制到应用程序项目目录中,那么WRT到Google Maps SDK,那么该框架将位于项目根目录中,您可以从其他链接程序标志中 删除 -ObjC
,并将其replace为
-force_load GoogleMaps.framework/Versions/Current/GoogleMaps
:
没有别的需要改变。
对于其他库,您将需要使用完整的静态库path作为-force_load
的参数。