TL;博士
- 如何构建静态库而不包含我引用的第三方库?
嗨,
在开始之前,我知道如何在 Xcode 中编译针对 iOS 设备和模拟器的静态库。但是,这一次我依赖于第三方库,我不想将其包含在静态库中。我只是想引用一下。但是,每当我构建静态库时,我都会遇到词法或预处理器错误,我知道当项目中缺少该库时,这种情况很常见。发生错误的原因是我从项目中删除了该库,因为我不想将其内置到静态库中。
有问题的库是 AFNetworking。在安装静态库时,我将使用 CocoaPods 显式安装依赖项。
谢谢。
最佳答案
当您引用外部代码时,您始终需要项目可以访问 header ,否则编译器将无法告诉您是否以正确的方式引用外部代码方式。例如。该方法是否存在,您是否提供了正确的类型等。
重复符号问题仅在您实际多次定义符号时才存在。例如,定义与类相关的 Objective-C 符号仅发生在 @implementation...@end
block 中,不发生在 中@interface...@end
block 。后者只是让编译器理解事物的意义。
(这也是为什么您可以为私有(private)类定义一个 @interface
并正常使用它,而不会导致重复的符号。)
因此,您可以多次包含此类“干净” header ,而不必担心。请注意,我说“干净”,因为您可以实际上在 header 中定义符号,例如,在 header 中定义 C 函数,甚至是 Objective-C @implementation
,如果你觉得自己特别邪恶。但您只需对此进行测试即可。
当您最终链接第 3 方依赖项和您的依赖项时,链接器会提示,毕竟存在重复的符号。在这种情况下,请务必查看诸如 nm
之类的工具,它列出了存档中的符号。
关于ios - 如何编译具有第 3 方依赖项而不包含依赖项的静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21924373/