7

我正在使用 Swift 包管理器。我有一个可以通过“swift build”成功构建的项目。我通过“swift package generate-xcodeproj”创建了一个 Xcode 项目。当我在 Xcode 中打开项目时,它会成功构建。

Xcode 项目包括两个模块 A 和 B。

模块 A 具有以下映射:

module ModuleA {
    umbrella header "/Users/Robert/Temp/MyProject/Sources/ModuleA/include/ModuleA.h"
    link "ModuleA"
    export *
}

模块 B 依赖于 A 并具有以下导入:

import ModuleA

到目前为止,一切都很好; 一切都成功构建。现在我想更改模块映射,使其使用相对路径,例如:

module ModuleA {
    umbrella header "ModuleA.h"
    link "ModuleA"
    export *
}

但是,当我这样做时,我无法构建模块 B:错误 - 找不到 Umbrella 标头“ModuleA.h”。我已经尝试了构建设置 -> 搜索路径 -> 标题搜索路径和用户标题搜索路径中我能想到的一切。我在网上、这里和其他地方发现了类似的问题,并尝试了我阅读的内容,但到目前为止还没有。

这已经到了拔毛阶段。任何建议将不胜感激!

4

1 回答 1

3

我的猜测是您正在修改生成的模块映射。在包含以下位置创建一个模块映射文件/Users/Robert/Temp/MyProject/Sources/ModuleA/include/module.modulemap

module ModuleA {
    umbrella header "ModuleA.h"
    link "ModuleA"
    export *
}

运行$ swift package clean以删除.build目录中旧生成的模块映射并$ swift build确认自定义模块映射有效。然后删除生成的Xcode项目,重新生成。

于 2017-02-01T19:44:21.477 回答