Xcode: "No such module" 嵌入式框架

Xcode: "No such module" embedded framework

我的项目中目前有 3 个嵌入式框架:

PersistenceLayerSocket 都没有引用它们之外的任何东西。但是 TransportLayer 导入 PersistenceLayerSocket。奇怪的是,导入后我可以使用 PersistenceLayer 个对象:

import PersistenceLayer

struct User : Model {
  ...
}

ModelPersistenceLayer 中定义,Xcode 允许我正常使用它。但是,当我尝试构建 TransportLayer 时,出现错误:No such Modul 'Persistencelayer'。所以 Xcode 识别出模块在那里,但在构建时不知何故 "looses" 它。

令人抓狂的是这曾经有效。在某些时候发生了一些变化,我无法弄清楚是什么。重要的是要注意,我与多个开发人员一起处理一个项目,并且我有 merged 的更改。但是,在合并之前切换到提交是行不通的。我也试过:

我怀疑我的项目设置发生了一些变化,但我不知道是什么,我检查了 git 差异并没有帮助(除了正常的文件添加。

此外,TransportLayer 确实成功导入并使用了 Socket。如果我删除对 PersistenceLayer 的引用但保留对 Socket.

的所有引用,我可以构建 TransportLayer

有谁知道为什么会发生这种情况或如何解决它?

更新

好的,所以我从目标中删除了 "offending" 文件以确保 Socket 正在工作(它是),然后将文件重新添加到目标(完全通过重置 git).它现在建立......因为这是有道理的。但是我尝试将 Scheme 从 iOS Device 更改为模拟器,但它不再构建,但我遇到了不同的错误:

这感觉就像我在追查随机错误...

我找到了答案:在 TransportLayer 目标中打开 Build Phases 并手动将 PersistenceLayerSocket 添加到 目标依赖项。这确保 TransportLayer 所依赖的任何东西都将在它之前被构建。

我有一种预感,iOS Device 方案起作用的最初原因是因为我删除了有问题的文件,允许正确构建所有内容,包括缓存的 PersistenceLayer。将导入添加回项目后,它继续工作,因为 PersistenceLayer 不再需要构建。其他方案不起作用,因为 PersistenceLayer 不是为这些架构构建的。我通过再次清理确认了这一点,但构建失败了。经过一番搜索,我找到了 Target Dependencies 并在那里添加了我的两个依赖项。现在一切都可以在所有方案和所有架构中正确构建。

我的项目可能到目前为止一直运行良好,因为它使用的是在我实际使用它们之前构建的缓存框架:(我在开始 TransportLayer 工作之前构建了 PersistenceLayer ).我可能最近某个时候清理了项目,删除了缓存的框架并导致了问题。