ModuleMap:如何设置伞形头的相对路径?

时间:2017-02-01 18:36:06

标签: xcode swift-package-manager

我正在使用Swift Package Manager。我有一个项目,我可以通过“快速构建”成功构建。我通过“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:错误 - 找不到伞标题'ModuleA.h'。我已经尝试了在构建设置中我能想到的所有内容 - >搜索路径 - >标题搜索路径和用户标题搜索路径。我在网上,这里和其他地方都发现过类似的问题,并尝试过我读过的内容,但到目前为止还没有去过。

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

1 个答案:

答案 0 :(得分:2)

我的猜测是你正在修改生成的模块图。在/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项目并重新生成它。