我目前在项目中有三个嵌入式框架:
PersistenceLayer
(仅限Swift)TransportLayer
(仅限Swift)Socket
(Objc)
PersistenceLayer
和Socket
都没有引用任何外部内容。然而,TransportLayer
导入了PersistenceLayer
和Socket
。奇怪的是,在导入后我可以使用PersistenceLayer
对象:
import PersistenceLayer
struct User : Model {
...
}
Model
是在PersistenceLayer
中定义的,Xcode让我正常使用它。但是,当我尝试构建TransportLayer
时,会出现错误:No such Modul 'Persistencelayer'
。所以Xcode识别模块是存在的,但在构建时却“丢失”了它。
令人发狂的是,这曾经可以工作。在某个时候,有些东西发生了改变,而我无法找出原因。需要注意的是,我与多个开发人员合作进行项目开发,并且已经合并了一些更改。但是切换到合并之前的提交并没有起作用。我还尝试过:
- 将
$(SRCROOT)
(递归)添加到框架搜索路径 - 删除
ModuleCache
目录中的所有内容 - 清理项目
- 清理构建文件夹
我怀疑我的项目设置发生了变化,但我无法找出原因,并且检查git diffs也没有帮助(除了正常的文件添加外,项目中没有真正发生变化的内容)。
此外,TransportLayer
成功导入并使用了Socket
。如果我删除对PersistenceLayer
的引用但保留对Socket
的所有引用,则可以构建TransportLayer。
有人知道为什么会发生这种情况或如何解决吗?
更新
好的,所以我从目标中删除了“有问题”的文件,以确保Socket
可以工作(它可以),然后重新将文件添加到目标中(通过重置git)。现在它可以构建...因为这是有意义的。但是,我尝试将方案从iOS设备更改为模拟器,它就无法构建了,但我收到了不同的错误:
- 在module.modulemap中:
Header
PersistenceLayer-Swift.h' not found` - 还有:
Could not build Objective-C module 'Persistence Layer'
这感觉像是在追踪随机错误...