在 Xcode9.3 找不到文件

File not found on Xcode9.3

我目前正在 Xcode 上的 Swift 中使用预编译的 SDK(Parrot SDK3:http://developer.parrot.com/docs/SDK3/#ios)开发一个项目(单视图应用程序)。

我的问题是我有一个 "file not found" 错误,而文件存在:

我尝试导入的header写在Objective-C中(但我想在ObjC文件中导入这些header)。 我注意正确写入 header 文件的路径并避免循环导入。在尝试了很多 clean/build 和很多方法之后,我不知道该怎么做。

Xcode 尝试在 "search paths" 列表的帮助下查找 header 文件 (.h)。 您可以在此列表中有多个搜索路径,例如,如果程序中有 #import <a.h>,并且搜索路径列表中有路径“/asd”和“/qwe”,它将尝试找到 header 为“/asd/a.h”或“/qwe/a.h”(两者都尝试)。

您可以在 Xcode 项目构建设置中添加自定义路径。有一个部分 "Search Paths",那里有 "Header Search Paths"。如果您的库在您的项目中,那么在路径中使用 $(SRCPATH) 变量很有用,它会扩展到您的项目根文件夹,如下所示:

请注意,如果您导入为 <somelib/somefile.h>,并且您在 "Header Search Paths" 中的路径有以 "include" 结尾的内容,例如“/some_path/include”,那么 header 必须位于“/some_path/include/somelib/somefile.h”,这有时不是真的,因为人们经常将 header 文件放在 "include/" 中,而不是 [=32] =].

解决此问题的一种方法是使用您的自定义名称创建一个指向库 "include" 文件夹的符号链接,然后将该符号链接的 parent 目录添加到您的 header 路径。

例如,如果您创建一个空目录 "libs/include/",并且您已将库文件放在 "libs/dist/libARDiscovery/.../include",那么您可以创建一个符号链接 "libs/include/libARDiscovery" 指向 "lib/dist/libARDiscovery/.../include",然后将“$(SRCROOT)/libs/include”添加到 header 搜索路径。