我已经看过类似问题的答案,我仍然感到困惑。
背景
我有一个项目正在运行,但我正在尝试在Xcode 8.3.1中重新创建它。我首先使用带有一个依赖项的Swift包管理器:[.Package(url:“https://github.com/OpenKitten/MongoKitten.git”,majorVersion:3)]。然后我按照我的说明从Cocoa转换为iOS(因为SPM不直接支持iOS),这在以前的项目开始时起作用:
一切似乎都很好,我的项目包括MongoKitten和它依赖的一堆其他框架。其中一个叫做“CLibreSSL”。我将所有框架作为目标添加到我新创建的目标中。
错误消息
我可以将“导入MongoKitten”导入我的viewcontroller(自动完成工作)。但是,当我编译时,我收到此错误消息(即使我个人不尝试导入CLibreSSL):
Compile Swift source files
[... bunch of stuff referring to my new target and the viewcontroller ...]
<unknown>:0: error: missing required module 'CLibreSSL'
我无法将“导入CLibreSSL”导入我的viewcontroller(无自动完成识别)。我注意到当我转到与MongoKitten相关的源文件时,他们确实在其import语句中成功识别了CLibreSSL。我甚至可以删除它们并重新键入成功的自动完成功能。
问题
我意识到当我像我一样创建一个新目标时,我可能需要做一些额外的事情,而且它可能与搜索路径有关,但我尝试了很多东西而且结果没有改变。有人可以告诉我如何解决这个问题(请不要因为我发现这些东西令人困惑而不能承担太多的知识)?
如果您需要更多信息,请与我们联系。谢谢
答案 0 :(得分:1)
我在iOS应用程序中包含Vapor时遇到了同样的问题“缺少必需的模块'CLibreSSL'”。 修复非常简单,也适用于您:
转到项目的构建设置。找到标题 Swift编译器 - 搜索路径。在导入路径中,使用$ {SRCROOT}添加C库文件夹的相对路径。如果您的文件夹包含子文件夹,请选择递归选项。
这是来自here
的提示编辑2017年5月26日:正如评论中所建议的那样 - 当使用真实设备时,我的解决方案对我也不起作用。我只是在模拟器中玩,这个修复有帮助。很抱歉这个混乱。
编译真实设备时,由于缺少头文件(例如<sys/vmmeter.h>
),CLibreSSL / getentropy_osx.c无法编译 - 所以底线:我的建议仅适用于模拟器。 : - /
答案 1 :(得分:1)
添加&#34;其他Swift Flags&#34; user3441734建议的构建设置为我修复了它。看起来奇怪的是,依赖于CLibreSSL模块的库(在我的情况下是OpenCloudKit)可以找到它,但我导入OpenCloudKit的应用程序无法提供帮助。作为参考,我的嵌套在SPM生成的Xcode项目(名为&#34; Dependencies&#34;)中导入到我的应用程序中,构建设置为-Xcc -fmodule-map-file=$(SRCROOT)/Dependencies/.build/x86_64-apple-macosx10.10/debug/CLibreSSL.build/module.modulemap
。请注意,这似乎有点脆弱,因为它有一个macOS版本硬编码到文件名中,我认为如果它更新到更高版本可能会破坏。另请注意,在我的情况下不需要搜索路径构建设置,只需要其他Swift路径设置。