ModuleMap:如何为伞 header 设置相对路径?
ModuleMap: How can I set a relative path for the umbrella header?
我正在使用 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 header 'ModuleA.h'。我已经在构建设置 -> 搜索路径 -> Header 搜索路径和用户 Header 搜索路径中尝试了我能想到的一切。我在网上、这里和其他地方发现了类似的问题,并尝试了我阅读的内容,但到目前为止还没有成功。
这已经到了拔毛的阶段了。任何建议将不胜感激!
我猜你正在修改生成的模块映射。在 /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项目和re-generate它。
我正在使用 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 header 'ModuleA.h'。我已经在构建设置 -> 搜索路径 -> Header 搜索路径和用户 Header 搜索路径中尝试了我能想到的一切。我在网上、这里和其他地方发现了类似的问题,并尝试了我阅读的内容,但到目前为止还没有成功。
这已经到了拔毛的阶段了。任何建议将不胜感激!
我猜你正在修改生成的模块映射。在 /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项目和re-generate它。