具有iOS项目的工作空间和相关的静态库项目

Ale*_*iks 9 header-files static-libraries xcode4

我正在与Xcode 4工作区作战.目前Xcode 4胜.因此,我的情况:

我有iOS应用程序项目的工作区.iOS app还有静态库项目依赖于此工作空间.


解决方案#1

我尝试像这样配置:

  • 应用项目:
    • 添加到目标的构建阶段>链接二进制与库产品(libmystaticlib.a);
    • 设置USER_HEADER_SEARCH_PATHS$(TARGET_BUILD_DIR)/usr/local/include $(DSTROOT)/usr/local/include;
  • 静态库项目:
    • 添加一些头文件到目标的Build Phases> Copy Headers> Public ;
    • 设置SKIP_INSTALLYES.

重要的是:两个项目必须具有相同的配置.否则,如果我有例如app的配置分发(Ad Hoc)和静态库的Release,则Xcode无法将应用程序与库链接.

使用此配置,将结果归档到包含来自静态库项目的应用程序和公共头文件的归档.当然,我无法分享*.ipa这种情况.:(


解决方案#2

我还尝试了另一种配置:

  • Xcode首选项:
    • 设置静态库的源代码树,例如ADDITIONS_PROJECT;
  • 应用项目:
    • 添加到目标的构建阶段>链接二进制与库产品(libmystaticlib.a);
    • 设置USER_HEADER_SEARCH_PATHS$(ADDITIONS_PROJECT)/**;
  • 静态库项目:
    • 不要将任何头文件添加到Public!
    • 设置SKIP_INSTALLYES.

我仍然需要关心这两个项目的配置名称.但结果我可以成功构建和存档.在结果我得到档案,我可以分享*.ipa.


我不喜欢第二种解决方案,因为在这种情况下,我没有得到Xcode 4工作区的任何真正优势.如果我在app项目中添加静态lib项目,我可以添加相同的效果.因此,我认为我的解决方案有问题.有什么建议如何更好地链接静态库?

小智 10

我还找到了一个适用于build和archive的解决方案.
在静态库中将公共标题文件夹路径设置为../../Headers/YourLib
在您的应用程序配置中将标题搜索路径设置为$(BUILT_PRODUCTS_DIR)/../../Headers

在您的应用程序中,您将能够编码 #import <YourLib/YourFile.h>

不要忘记Skip Install = YES静态库中的选项.