首页 > 解决方案 > 桥接头仅查找具有完整路径的文件

问题描述

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

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 <subfolder/Subfolder.h>#import <TheFramework/subfolder/Subfolder.h>then 似乎找到了该文件,因为它在 Subfolder.h 中失败,它尝试执行#import <subfolder/Another.h>并再次失败并出现 Not found

如果我更改subfolder/Another.hTheFramework/subfolder/Another.hthen 它也可以在这里工作。

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

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

谢谢!

标签: iosimportbridging-header

解决方案


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

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

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


推荐阅读