iPhone - 静态库,“复制标题”的目的?

时间:2012-03-27 12:29:40

标签: iphone xcode4.2 static-libraries header-files

我正在创建一个库,即使它通过打包我的所有代码并将所有头文件放在一个文件夹中然后压缩文件夹和静态库来完美地工作,我只是无法弄清楚目的Build Phases下的“Copy Headers”部分。

我已阅读所有这些链接:

Using open source static libraries

Creating static libraries for iOS

How to create universal static libraries

Stackoverflow: copy headers: public vs private vs project

但我仍然没有看到设置复制标题的重点,我意识到您可以在构建设置>下设置私有和公共路径。打包后,头文件将在构建后转到该文件夹​​。但这有什么意义呢?这有什么不同于不设置单个副本头文件,只需抓取.a文件抓取我的所有头文件并将它们放在一个文件夹中?设置复制项目标题的目的是什么?,因为它们根本不包含在目标中?。

2 个答案:

答案 0 :(得分:1)

据我所知,将标题添加到“复制标题”阶段的“公共”部分与在发布文件夹中复制它们完全相同。

我使用它作为一种方便,因为我使用运行脚本自动执行库打包过程(感谢this StackOverflow question ,如果要提供通用库,则应该阅读)。

通过这样做,我只需要将新的公共标题添加到“复制标题”阶段的“公共”部分,以便使用此部分脚本将它们自动部署到我的发布文件夹中:

#########
#
# Added: StackOverflow suggestion to also copy "include" files
#    (untested, but should work OK)
#
if [ -d "${CURRENTCONFIG_DEVICE_DIR}/usr/local/include" ]
then
mkdir -p "${CREATING_UNIVERSAL_DIR}/headers"
# * needs to be outside the double quotes?
cp "${CURRENTCONFIG_DEVICE_DIR}/usr/local/include/"* "${CREATING_UNIVERSAL_DIR}/headers"
fi

我还注意到这些标题在归档时会被复制到包中(Product - > Archive),所以也许这是Apple提供一种简洁的方法来构建静态库的第一步。

希望这有帮助

答案 1 :(得分:1)

生成存档时,复制标题阶段现在是否有效? Apple的文档表明该功能不起作用,他们建议使用复制文件构建阶段。这是在Xcode的最新版本中修复过的吗? https://developer.apple.com/library/ios/#technotes/iOSStaticLibraries/Articles/creating.html