当前位置 : 主页 > 手机开发 > 其它 >

如何管理包含重复依赖项的依赖关系树? (XCode,iOS)

来源:互联网 收集:自由互联 发布时间:2021-06-22
我正在开发一个相当复杂的iOS应用程序.为了使开发合理化,我开始将每个模块开发为独立项目,然后在顶层应用程序项目中一起组合,从而生成依赖关系树. 我以前成功地采用了这种方法
我正在开发一个相当复杂的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并给它们唯一前缀的复杂解决方案,但这会有点效率低,因为它是相同的代码.我可以忍受这个,但有更好的方法吗?也许某些编译器或链接器标志重用构建文件夹中的现有符号(如果存在),而不是再次编译?

谢谢你的建议.

对我来说最有效的解决方案是在每个模块项目中有两个目标:< TargetName>我称之为< TargetName> -NoLink.

这两个目标是相同的,只是在-NoLink中省略了链接阶段.因此,只创建了中间.o文件,构建可以一直进行到根项目,最终链接到所有模块.

链接目标< TargetName>仍然保留了在树中任何点链接所有依赖项的灵活性,为任何模块生成一个独立的.a文件.

网友评论