XCode中的标头搜索路径

时间:2014-04-17 17:01:11

标签: ios objective-c xcode

我正在重构我在XCode中生成的代码,以便拥有一定数量的静态库,我可以将这些代码分发给我的合作伙伴。

我在使用Apple教程中建议的静态库时没有任何问题,它们展示了如何使用库将静态库用作项目的子项目。

但是,在新项目中使用生成的目标文件(.a)和相应的头文件(.h)时遇到问题。

假设我有一个带有标题lib.a的库f1.h。我要做的是在新项目中创建一个新文件夹F并将F lib.a文件和包含include的文件夹f1.h复制到其中:

- PROJECT

storyboard.storyboard     
/project
 /images.xcassets
 /Supporfing Files
 ...
 /libs
  lib.a
  /include
    /lib
      f1.h

我有这些问题:

  • 标题文件位于#import f1.h而不是#import lib/f1.h

  • 如果我在故事板中直接使用静态库中实现的视图控制器,则应用程序失败,但是如果我创建一个新的ViewController扩展lib中的一个并在故事板中使用后者,那么一切正常细

在应用程序中使用静态库不应该这么困难,所以我显然做错了。您有任何建议的工作流程和设置吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您没有相应的Xcode静态库项目和源,则可以使用标头和二进制静态存档,如下所示:

您的文件夹结构应如下所示:

$(LIBRARIES)/release-iphoneos
    libA.a
    libF.a
    /include
        /A
            a1.h
        /F
            f1.h

发布配置(或所有其他)的标头搜索路径应包含以下路径:

$(LIBRARIES)/release-iphoneos/include

iOS(非模拟器)的图书馆搜索路径应包含

$(LIBRARIES)/release-iphoneos

其中libA.alibF.a是包含armv7,armv7s和arm64的通用二进制文件。

您还可以为模拟器设置库:只需获取Simulator的二进制文件(i386或可能是通用的i386 + x86_64)并相应地设置库和标题搜索路径。 (注意,您可以在Build Settings编辑器中明确设置每个配置和体系结构的头和库搜索路径。)

您可以按如下方式导入标题:

#import <F/f1.h>

否则

如果您拥有 Xcode静态库项目(和源代码),只需按照官方文档中的说明使用并构建静态库。