桥接头仅查找具有完整路径的文件
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 <subfolder/Subfolder.h>
更改为#import <TheFramework/subfolder/Subfolder.h>
,那么似乎找到了该文件,因为它在尝试执行#import <subfolder/Another.h>
的Subfolder.h 中失败并再次失败并显示未找到
如果我将subfolder/Another.h
更改为TheFramework/subfolder/Another.h
,那么它也可以在这里工作。
现在在我的现实生活场景中,我在不同的子文件夹中有 4 个头文件,所有这些文件都导入了大约 50 个其他文件,因此更改所有导入将......烦人。 此外,如果以后我们想更新到较新版本的框架,所有更改的导入都将丢失。
有人知道我该如何解决这个问题吗?通过让项目找到已经定义的导入,或者通过例如在某处定义一个值,使编译器理解 subfolder/file.h
等于 TheFramework/subfolder/file.h
?
谢谢!
【问题讨论】:
【参考方案1】:找到我必须添加的解决方案
"$(SRCROOT)/frameworks/theFramework.framework/Headers"
到我的目标用户标题搜索路径(目标 -> 构建设置 -> 用户标题搜索路径。 这似乎让编译器知道在哪里额外搜索包括子文件夹在内的头文件。
【讨论】:
以上是关于桥接头仅查找具有完整路径的文件的主要内容,如果未能解决你的问题,请参考以下文章