4

我已经查看了类似问题的答案,但我仍然感到困惑。

背景

我有一个项目正在运行,但我正在尝试在 Xcode 8.3.1 中重新创建它。我首先使用带有一个依赖项的 Swift 包管理器:[.Package(url: " https://github.com/OpenKitten/MongoKitten.git ", majorVersion: 3)]。然后我按照我的笔记从 Cocoa 转换到 iOS(因为 SPM 不直接支持 iOS),这在以前的项目开始时工作:

  1. 制作启动 Package.swift 文件
  2. swift包生成-xcodeproj
  3. 在 Xcode 中打开项目
  4. 项目:构建设置:基础 SDK ==> 更改为 IOS
  5. 编辑器:添加目标:(iOS ...单视图应用程序)
  6. 选择您的项目,查看目标列表,找到您新添加的目标:常规:部署信息
  7. 在工具栏上,更改“活动方案”

一切似乎都很好,我的项目包括 MongoKitten 和它所依赖的一堆其他框架。其中之一称为“CLibreSSL”。我将所有框架作为目标添加到我新创建的目标中。

错误信息

我可以“导入 MongoKitten”到我的视图控制器中(使用自动完成功能)。但是,当我编译时,我收到此错误消息(即使我个人没有尝试导入 CLibreSSL):

Compile Swift source files 
[... bunch of stuff referring to my new target and the viewcontroller ...] 
<unknown>:0: error: missing required module 'CLibreSSL' 

不能“导入 CLibreSSL”到我的视图控制器中(没有自动完成识别)。我注意到,当我转到与 MongoKitten 相关的源文件时,它们确实在其导入语句中成功识别了 CLibreSSL。我什至可以删除它们并通过成功的自动完成重新输入。

问题

我意识到当我像我一样创建一个新目标时,我可能需要做一些额外的事情,这可能与搜索路径有关,但我尝试了很多东西,结果没有改变。有人可以告诉我如何解决这个问题(并且请不要假设我有太多的知识,因为我觉得这些东西令人困惑)?

如果您需要更多信息,请告诉我。谢谢

4

2 回答 2

2

在 iOS 应用程序中包含 Vapor 时,我遇到了同样的问题“缺少必需的模块 'CLibreSSL'”。修复非常简单,也应该适用于您:

转到项目的构建设置。找到标题Swift Compiler - Search Paths。在Import Paths中,使用 ${SRCROOT} 添加 C 库文件夹的相对路径。如果您的文件夹包含子文件夹,请选择递归选项。

这是这里的提示

编辑 2017 年 5 月 26 日:正如评论中所建议的那样——使用真实设备时,我的解决方案也不适用于我。我只是在模拟器中玩耍,这个修复有帮助。很抱歉造成混乱。在为真实设备编译时,由于缺少头文件(例如),CLibreSSL/getentropy_osx.c 无法编译<sys/vmmeter.h>- 所以底线:我的建议仅适用于模拟器。:-/

于 2017-04-17T18:25:00.920 回答
1

按照 user3441734 的建议添加“Other Swift Flags”构建设置为我修复了它。依赖 CLibreSSL 模块的库(在我的情况下为 OpenCloudKit)可以找到它似乎很奇怪,但我导入 OpenCloudKit 的应用程序不能没有帮助。作为参考,我的嵌套在导入到我的应用程序中的 SPM 生成的 Xcode 项目(名为“Dependencies”)中,构建设置为-Xcc -fmodule-map-file=$(SRCROOT)/Dependencies/.build/x86_64-apple-macosx10.10/debug/CLibreSSL.build/module.modulemap. 请注意,这似乎有点脆弱,因为它有一个硬编码到文件名中的 macOS 版本,我认为如果它更新到更高版本可能会中断。另请注意,在我的情况下,不需要 Search Paths 构建设置,只需要 Other Swift Paths 设置。

于 2018-04-03T00:04:36.727 回答