Xcode构建阶段:标头与复制文件

ma1*_*w28 5 xcode static-libraries build-settings

这些Xcode构建阶段之间的区别是:标头和复制文件?

当我向项目中添加Cocoa Touch静态库(iOS)时,它带有“复制文件”构建阶段,而当我添加“普通静态库”(macOS)时,它具有标题构建阶段。

我要添加的目标的源代码完全是用C编写的。而且,我希望能够将此项目包含在其他包含iOS和macOS应用程序目标的项目中。

The*_*ind 0

两者的区别其实很简单(适用于静态库,但不适用于框架):

  • Headers Phase将所有公共私有标头复制到/usr/local/include文件夹中,以便在安装库时它们在 macOS 上的系统范围内可用(在开发时,Xcode 只是$(TARGET_BUILD_DIR)为您创建此文件夹层次结构,以便您可以根据需要检查标头)。
  • 复制文件提供特定于产品的目标$(TARGET_BUILD_DIR)/include/$(PRODUCT_NAME),其中标头应该与库二进制文件一起传递。

第二种方法更加灵活(虽然您可以在 macOS 和 iOS 中使用复制文件阶段,但使用标头阶段仅在 macOS 中有意义)。

PS 请注意,对于框架,头阶段的工作方式不同,实际上将标头嵌入到正在开发的框架中,因此在这种情况下,这是更优选的方式。