我正在开发一个相当复杂的iOS应用程序.为了使开发合理化,我开始将每个模块开发为独立项目,然后在顶层应用程序项目中一起组合,从而生成依赖关系树.
我以前成功地采用了这种方法,但这次有共享依赖(C)导致问题:
A /|\ / | \ B C D / \ \ C E C
其中A是顶级应用程序项目,C是函数的"核心库".此核心库是A本身以及模块B和D 的依赖项.由此产生的多重编译会导致构建文件夹中的重复符号并且链接失败.
现在,我可以务实,只是从A中删除引用,因为这将被B编译到构建文件夹中,如果不涉及D,这将起作用.但是我如何解决B和D中C依赖的重复? 当我独立编译它们时,B和D项目仍然需要对C的引用,但是在A的上下文中编译两次时会发生冲突.
我可以想象一些使用objcopy并给它们唯一前缀的复杂解决方案,但这会有点效率低,因为它是相同的代码.我可以忍受这个,但有更好的方法吗?也许某些编译器或链接器标志重用构建文件夹中的现有符号(如果存在),而不是再次编译?
谢谢你的建议.