【发布时间】:2011-07-20 09:51:08
【问题描述】:
我正在与 Xcode 4 工作区作斗争。目前 Xcode 4 获胜。因此,我的情况:
我有 iOS 应用项目的工作区。此工作区中还有一个静态库项目 iOS 应用程序依赖。
解决方案 #1
我尝试这样配置:
- 应用项目:
- 添加到目标的构建阶段>链接二进制与库一个产品(
libmystaticlib.a); - 将
USER_HEADER_SEARCH_PATHS设置为$(TARGET_BUILD_DIR)/usr/local/include $(DSTROOT)/usr/local/include;
- 添加到目标的构建阶段>链接二进制与库一个产品(
- 静态库项目:
- 添加一些头文件到目标的Build Phases > Copy Headers > Public;
- 将
SKIP_INSTALL设置为YES。
重要的是:两个项目的配置必须相同。否则,如果我有,例如,应用程序名为 Distribution (Ad Hoc) 的配置和静态库的 Release 配置,Xcode 无法将应用程序与库链接。
使用此配置归档结果到包含来自静态库项目的应用程序和公共标头的归档。当然,在这种情况下我无法分享*.ipa。 :(
解决方案 #2
我也试过另一种配置:
- Xcode 首选项:
- 为静态库设置源码树,例如
ADDITIONS_PROJECT;
- 为静态库设置源码树,例如
- 应用项目:
- 添加到目标的构建阶段>链接二进制与库一个产品(
libmystaticlib.a); - 将
USER_HEADER_SEARCH_PATHS设置为$(ADDITIONS_PROJECT)/**;
- 添加到目标的构建阶段>链接二进制与库一个产品(
- 静态库项目:
- 不要在Public中添加任何头文件!;
- 将
SKIP_INSTALL设置为YES。
我仍然需要关心这两个项目的配置名称。但结果我可以成功构建和存档。结果我得到了存档,我可以分享*.ipa。
我不喜欢第二种解决方案,因为在这种情况下,我没有从 Xcode 4 工作区获得任何真正的优势。如果我在应用程序项目中添加静态库项目,我可以添加相同的效果。因此,我认为我的解决方案有问题。 有什么建议如何更好地链接静态库?
【问题讨论】:
-
看看我的解决方案说明。 stackoverflow.com/questions/6400800/…我通过制作假框架结构解决了这个问题。与您的解决方案 #1 类似的方法,但稍微简单一些。无需修改应用端项目设置。
-
我不喜欢框架解决方案,因为它有点 hacky,因为它没有得到 Apple 官方对 iOS 的支持。
标签: xcode4 static-libraries header-files