Xcode - 使用标头导入和基于文件夹的路径

时间:2013-07-01 21:02:45

标签: objective-c xcode

我正在使用静态库并将Xcode指向一个带有标题的文件夹。这些标题以分层文件夹结构组织:

headers:
 - a.h
 - b.h
 - subheaders:
    - c.h
 - moreheaders:
    - d.h

我还有一些使用此库的预先编写的源代码,它根据其位置引用标题:#import "subheaders/c.h"

然而,Xcode会使文件夹层次结构变平,迫使我使用#import "c.h"。有很多代码,我不能轻易地重写它来停止使用foldered导入。有什么方法可以让Xcode识别文件夹结构吗?

P.S。我在主要目标下使用“库搜索路径”“标题搜索路径”构建设置包含这些标题。搜索是非递归的,所以我不知道它是如何找到嵌套的标题......

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

Xcode默认情况下会构建标题映射,并且标题映射是平坦的,除非模块/框架的映射为ModuleName/Header.h。有关Xcode如何构建这些映射,存在哪些设置以及编译器如何进行的详细信息(如果在映射中找不到文件please see this answer

)。

设置适当的标头搜索路径(HEADER_SEARCH_PATHSUSER_HEADER_SEARCH_PATHS)将使包含路径成为可能,无论是否使用标头映射都可以,但在这种情况下,拼合的导入仍然可以正常进行。如果您不希望平展导入工作,则需要禁用标题映射,或确保没有将相关的标题文件添加到映射中,如其他答案所示。

答案 1 :(得分:0)

不幸的是,这只是我没有观察的情况。我已将标题添加到搜索路径中,但我之前也将它们添加为项目的源代码(以查看是否可以通过这种方式使其工作)。当我删除源文件夹并保留标题搜索路径时,我可以通过其完整路径引用文件。谢谢你的帮助。

答案 2 :(得分:0)

经过数小时的尝试和失败,我在XCode 9.3兼容项目中的XCode 9.4.1中找到了一个选项,以禁用

  

使用标题表

这将使Xcode识别项目结构。

尽管我将每个文件和文件夹的位置都设置为与项目相关

我希望有人遇到同样的问题,并且现在有解决方案