我正在使用静态库并将Xcode指向一个带有标题的文件夹。这些标题以分层文件夹结构组织:
headers:
- a.h
- b.h
- subheaders:
- c.h
- moreheaders:
- d.h
我还有一些使用此库的预先编写的源代码,它根据其位置引用标题:#import "subheaders/c.h"
。
然而,Xcode会使文件夹层次结构变平,迫使我使用#import "c.h"
。有很多代码,我不能轻易地重写它来停止使用foldered导入。有什么方法可以让Xcode识别文件夹结构吗?
P.S。我在主要目标下使用“库搜索路径”“标题搜索路径”构建设置包含这些标题。搜索是非递归的,所以我不知道它是如何找到嵌套的标题......
感谢您的帮助!
答案 0 :(得分:1)
Xcode默认情况下会构建标题映射,并且标题映射是平坦的,除非模块/框架的映射为ModuleName/Header.h
。有关Xcode如何构建这些映射,存在哪些设置以及编译器如何进行的详细信息(如果在映射中找不到文件please see this answer。
设置适当的标头搜索路径(HEADER_SEARCH_PATHS
或USER_HEADER_SEARCH_PATHS
)将使包含路径成为可能,无论是否使用标头映射都可以,但在这种情况下,拼合的导入仍然可以正常进行。如果您不希望平展导入工作,则需要禁用标题映射,或确保没有将相关的标题文件添加到映射中,如其他答案所示。
答案 1 :(得分:0)
不幸的是,这只是我没有观察的情况。我已将标题添加到搜索路径中,但我之前也将它们添加为项目的源代码(以查看是否可以通过这种方式使其工作)。当我删除源文件夹并保留标题搜索路径时,我可以通过其完整路径引用文件。谢谢你的帮助。
答案 2 :(得分:0)
经过数小时的尝试和失败,我在XCode 9.3兼容项目中的XCode 9.4.1中找到了一个选项,以禁用
使用标题表
这将使Xcode识别项目结构。
尽管我将每个文件和文件夹的位置都设置为与项目相关
我希望有人遇到同样的问题,并且现在有解决方案