目标依赖关系与链接二进制文件与库

时间:2012-10-17 09:29:09

标签: xcode

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

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

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

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

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

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

有人可以解释一下这个区别,我正在做的是正确的方法吗?

非常感谢!

2 个答案:

答案 0 :(得分:4)

它说here ......

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

和...

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

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

所以看来你应该同时使用两者。虽然看似多余,因为如果你链接到一个框架那么它的依赖。我想你可能只想链接到一个库,而不是先建立它。虽然XCode似乎构建链接库,即使没有将它们添加到依赖项部分。也许这是计划的构建设置中“Find Implicit Dependencies”选项的结果。

答案 1 :(得分:0)

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

最终解决方案只是删除“标头/库搜索路径”的显式设置,并正确设置目标依赖项。这导致了用于调试和存档的项目构建没有问题。