17

我不明白这些 Xcode 功能之间的区别。

我正在构建和应用程序 - 但应用程序的功能被抽象到库中(因此它们可以作为“SDK”单独分发)。

所以我有一个库项目和应用程序项目的工作区。我可以通过“将二进制文件与库链接”将库项目添加到应用程序项目中。这为我提供.a了当前工作区中可以链接到的库项目列表。

我也可以在这里添加框架。

在“目标依赖项”位中,我只能添加当前项目中的其他目标。

我真正想做的是两者——我希望我的应用程序项目在构建时构建所有其他库项目。我还想详细说明应用程序(和其他库)依赖的库。

那么有人可以解释一下区别,我所做的是否是正确的方法?

非常感谢!

4

2 回答 2

9

这里说...

  1. 将您的框架产品(位于 Products 文件夹中)拖到应用程序目标的现有 Link Binary With Libraries 构建阶段。这会导致应用程序链接到您的框架。

和...

  1. 在检查器窗口的常规选项卡中,将您的框架添加为应用程序的依赖项。添加此依赖项会导致 Xcode 在构建应用程序目标之前构建框架目标。

您在应用程序目标中建立的构建依赖关系会导致框架在应用程序之前构建。这很重要,因为它保证了框架的构建版本可用于链接和嵌入应用程序。由于这种依赖关系,您可以将 Xcode 项目的活动目标设置为您的应用程序并将其保留在那里。

因此,您似乎应该同时使用两者。不过,这似乎是多余的,因为如果您要链接到一个框架,那么它就是一个依赖项。我想您可能只想链接到一个库而不是先构建它。尽管 XCode 似乎构建了链接库,即使它们没有被添加到依赖项部分。也许这是方案构建设置中“查找隐式依赖项”选项的结果。

于 2016-08-06T19:15:59.647 回答
0

我做了类似的事情,并在最终的可执行目标中明确设置了“标题搜索路径”和“库搜索路径”。然而,这一切都取决于生成对象的位置。最初我将它设置在源代码树中(实际上是一个名为 的同级目录build),但是在更改 XcodeDerivedData目录的位置并告诉它构建到该目录后,项目不再构建。

最终的解决方案是简单地删除“标题/库搜索路径”的显式设置并正确设置目标依赖项。这导致为调试和归档而构建的项目没有问题。

于 2012-10-17T10:13:38.773 回答