我不明白这些Xcode功能之间的区别.
我正在构建和应用程序 - 但应用程序的功能正在被抽象到库中(因此它们可以作为"SDK"单独分发).
所以我有一个图书馆项目工作区和应用项目.我可以通过"链接二进制文件库"将库项目添加到应用程序项目中.这给了我一个.a我可以链接到的当前工作空间中的库项目列表.
我也可以在这里添加框架.
在"目标依赖项"位中,我可以添加的是当前项目中的其他目标.
我真正想做的是 - 我希望我的app项目在构建时构建所有其他库项目.我还想详细说明应用程序(和其他库)依赖的库.
那么有人可以解释一下这个区别,我正在做的是正确的方法吗?
非常感谢!
它说这里 ...
- 将您的框架产品(位于“产品”文件夹中)拖到应用程序目标的现有“链接二进制文件与库”构建阶段。这将导致应用程序链接到您的框架。
和...
- 在检查器窗口的“常规”选项卡中,将框架添加为应用程序的依赖项。添加此依赖关系会导致Xcode在构建应用程序目标之前先构建框架目标。
您在应用程序目标中建立的构建依赖关系导致在应用程序之前先构建框架。这很重要,因为它可以保证可以使用框架的内置版本来链接和嵌入到应用程序中。由于这种依赖性,您可以将Xcode项目的活动目标设置为应用程序,然后将其保留在该位置。
因此,似乎您应该同时使用两者。但是,这似乎是多余的,因为如果要链接到框架,则它是一个依赖项。我想您可能只想链接到一个库,而不先构建它。尽管XCode似乎即使不将链接库添加到依赖项部分也可以构建链接库。可能是由于方案的构建设置中的“查找隐式依赖项”选项导致的。
我做了类似的事情,并在最终的可执行目标中明确设置了“标头搜索路径”和“库搜索路径”。然而,这一切都取决于对象的生成位置。最初我将其设置在源代码树中(实际上是一个名为 的同级目录build),但是在更改 Xcode 目录的位置DerivedData并告诉它构建到该目录中之后,项目不再构建。
最终的解决方案只是删除“标头/库搜索路径”的显式设置并正确设置目标依赖项。这使得项目构建的调试和归档没有出现问题。