2

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

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

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

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

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

谢谢你的帮助!

4

3 回答 3

1

Xcode 默认构建头映射并且头映射是平面的,除了模块/框架,其中映射是ModuleName/Header.h. 有关 Xcode 如何构建这些映射的详细信息,存在哪些设置以及编译器做了什么,如果在映射中找不到文件,请参阅此答案

设置适当的标头搜索路径(HEADER_SEARCH_PATHSUSER_HEADER_SEARCH_PATHS)将使路径包含成为可能,无论是否使用标头映射,但在这种情况下,扁平化导入仍然可以正常工作。如果您不希望扁平化导入起作用,则需要禁用标头映射或确保有问题的头文件未添加到映射中,如另一个答案所示。

于 2020-08-28T12:12:57.213 回答
0

不幸的是,这只是我没有注意的一个例子。我已将标题添加到搜索路径中,但我之前也将它们作为源添加到项目中(看看我是否可以让它以这种方式工作)。当我删除源文件夹并保留标题搜索路径时,我可以通过完整路径引用文件。谢谢您的帮助。

于 2013-07-03T00:58:54.263 回答
0

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

Ues 标头图

这将使 Xcode 识别项目结构。

我认为将每个文件和文件夹位置设置为项目相关

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

于 2018-08-31T07:31:16.017 回答