ios - 桥接头仅查找具有完整路径的文件
问题描述
我有一个需要本地框架的项目。该项目在框架文件夹中设置了框架。新的本地框架也放置在其中。结果文件夹结构如下:
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.h
为TheFramework/subfolder/Another.h
then 它也可以在这里工作。
现在在我的现实生活场景中,我在不同的子文件夹中有 4 个头文件,它们都导入了大约 50 个其他文件,因此更改所有导入将是......烦人。此外,如果稍后我们想要更新到更新版本的框架,所有更改的导入都将丢失。
有人知道我该如何解决这个问题吗?通过让项目找到已经定义的导入,或者通过例如在某处定义一个值,使编译器理解subfolder/file.h
等于TheFramework/subfolder/file.h
?
谢谢!
解决方案
找到我必须添加的解决方案
"$(SRCROOT)/frameworks/theFramework.framework/Headers"
到我的目标用户头文件搜索路径(目标 -> 构建设置 -> 用户头文件搜索路径。这似乎让编译器知道在哪里另外搜索头文件,包括子文件夹。
推荐阅读
- javascript - 外部 JavaScript 标签如何访问另一个 js 文件功能?
- c# - C#抽象类不能创建实例
- python - TypeError: __init__() 至少需要 3 个参数(给定 5 个) Keras
- java - Java Array 删除最后存储的元素
- javascript - 通过将鼠标悬停在子菜单上进行选择时下拉菜单消失
- python - 使用列表中的值更新字典中的值
- vb.net - 如何查询本地数据表并将信息返回到 VB.net 中的数据表
- java - 如何在java中对多维数组使用foreach或增强的for循环?
- c# - 如何保持 SqlConnection 在 using 块中打开,以便在块内进行异步查询?
- c++ - 尝试为每个字符串初始值设定项输入数据