我正在开发一个相当复杂的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并给它们唯一的前缀,但这样效率会有点低,因为这是相同的代码。我可以接受这种方法,但是否有更好的方法呢?也许有一些编译器或链接器标志,可以重用构建文件夹中已经存在的符号,而不是再次编译?
感谢任何建议。