桥接头仅查找具有完整路径的文件

Posted

技术标签:

【中文标题】桥接头仅查找具有完整路径的文件【英文标题】:Bridging header finds file only with full path 【发布时间】:2020-02-27 15:29:02 【问题描述】:

我有一个需要本地框架的项目。 该项目在框架文件夹中设置了框架。 新的本地框架也放置在其中。结果文件夹结构是这样的:

project
-- frameworks
---- theFramework.framework
------Headers
--------TheFramework.h
--------file1.h
--------file2.h
--------subfolder
----------Subfolder.h
----------Another.h

在 Bridging 标头中需要导入 TheFramework.h 和 Subfolder.h。

看起来是这样的:

#ifndef Bridging_Header_h
#define Bridging_Header_h

#import <TheFramework/TheFramework.h> //This one is working just fine
#import <subfolder/Subfolder.h> //This one fails with File not found

#endif /* Bridging_Header_h */

如果我将#import &lt;subfolder/Subfolder.h&gt; 更改为#import &lt;TheFramework/subfolder/Subfolder.h&gt;,那么似乎找到了该文件,因为它在尝试执行#import &lt;subfolder/Another.h&gt; 的Subfolder.h 中失败并再次失败并显示未找到

如果我将subfolder/Another.h 更改为TheFramework/subfolder/Another.h,那么它也可以在这里工作。

现在在我的现实生活场景中,我在不同的子文件夹中有 4 个头文件,所有这些文件都导入了大约 50 个其他文件,因此更改所有导入将......烦人。 此外,如果以后我们想更新到较新版本的框架,所有更改的导入都将丢失。

有人知道我该如何解决这个问题吗?通过让项目找到已经定义的导入,或者通过例如在某处定义一个值,使编译器理解 subfolder/file.h 等于 TheFramework/subfolder/file.h

谢谢!

【问题讨论】:

【参考方案1】:

找到我必须添加的解决方案

"$(SRCROOT)/frameworks/theFramework.framework/Headers"

到我的目标用户标题搜索路径(目标 -> 构建设置 -> 用户标题搜索路径。 这似乎让编译器知道在哪里额外搜索包括子文件夹在内的头文件。

【讨论】:

以上是关于桥接头仅查找具有完整路径的文件的主要内容,如果未能解决你的问题,请参考以下文章

Flurry 的正确桥接头是啥?

Firebase 无法导入桥接头

无法导入桥接头 xcode 6.4

创建应用程序扩展时找不到桥接头

创建应用程序扩展时找不到桥接头

当项目名称有空格时,无法从桥头获取正确的文件路径