我正在开发一个相当复杂的iOS应用程序。为了使开发合理化,我已经开始将每个模块作为独立项目进行开发,然后将它们组合在顶级应用程序项目中,从而生成依赖关系树。如何管理包含重复依赖关系的依赖关系树? (XCode,iOS)
我成功之前,已经采取了这种做法,但这次有一个共同的依赖(C),这将导致一个问题:
A
/|\
/| \
B C D
/\ \
C E C
其中A为顶级应用程序项目,C是“核心库“的功能。此核心库是A本身以及模块B和D的依赖关系。生成的多重复合会导致生成文件夹中出现重复的符号,并导致连接失败。
现在,我可以很实用,只需从A中删除引用,因为无论如何都会将它们编译到构建文件夹中,并且如果D没有涉及,那么这只会起作用。但是我该如何解决从B和D解决C依赖关系的重复问题? 的B和d项目仍然需要与C的参考,当我编译它们独立位置,但是当A的情况下编了两次
我可以用objcopy把,并给他们唯一的前缀想象一些复杂的解决方案的冲突,但这是相当低效的,因为它是相同的代码。我可以忍受这一点,但还有更好的办法吗?也许一些编译器或链接器标志重用生成文件夹中的现有符号(如果存在),而不是再次编译?
感谢您的任何建议。
从技术上说,这是因为同样的问题: http://stackoverflow.com/questions/11784917/how-do-i-resolve-avoid-duplicate-symbols-in-common-transitive-xcode-dependencies 。 ..但它没有得到充分的答复。 –
我不能看到这个问题,一个静态库在构建时不会链接到其他库,但公开了只有当该库链接到可执行文件时才解析的依赖关系。在你的情况下“A”。看来B,C,D,E不是静态库,否则你的问题就没有意义了。 – Till
@Till:“一个静态库,在构建时不会链接到其他库”。是的,确实如此,这就是问题所在!无论如何,我已经明确地忽略了顶层以下目标的链接阶段,从而解决了这个问题,然后导致你描述的行为。 –