我有两个Objective C动态框架X和Y,以及另一个Objective C应用Z。 所有这些框架和应用程序都是我在本地创建的。框架X是框架Y和应用Z使用的非常基本的框架。因此,依赖关系图如下所示:
Y ---> X
Z ---> X
Z ---> Y(---> X)
我希望所有目标都是可调试的,并根据运行目标(设备/模拟器)选择平台工具。因此,我将依赖项作为子项目添加到了主项目中,并将它们与依赖项链接起来,以通过Xcode生成隐式依赖项。
设置1和2独立工作。但是我在设置3中苦苦挣扎,它由于对目标X的传递依赖(目标Y和Z都依赖于它)而为目标X创建重复的构建规则,并且随后使构建过程失败。
有人对如何处理这种情况有任何想法吗?预先感谢!
答案 0 :(得分:1)
似乎在Objective-C中,我们无法将动态框架链接到另一个动态框架或命令行工具。在生产环境中运行时,总是会引发异常。
Dyld Error Message:
Library not loaded: @rpath/XFrameworks.framework/Versions/A/XFrameworks
针对您的情况,我认为可以解决您的问题的
答案 1 :(得分:1)
实际上,有一种方法可以最终解决Xcode中的传递依赖问题。我必须使用Workspace(.xcworkspace),而不是Xcode项目(.xcodeproj)。
要完成此操作,请执行以下步骤:
此设置对我来说就像是一种魅力,而无需创建重复的构建规则,它也自发地获取了依赖项。
很明显,如果您的独立框架是静态库,则无法执行此操作,在这种情况下,它将被链接到两个从属目标,从而导致链接期间出现重复符号。