多个含XCFramework二进制目标的Swift Package引发module.modulemap重复错误
问题:两个包含XCFramework的Swift Package导致
module.modulemap冲突错误 我有两个Swift Package依赖,均包含XCFramework二进制目标。这两个XCFramework都具备以下内容:
- .a 文件
- 包含.h文件和
module.modulemap文件的Headers文件夹
添加到项目后出现如下错误:
Multiple commands produce '/Users/../Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/include/module.modulemap' Command: ProcessXCFramework /Users/omran/Library/Developer/Xcode/DerivedData/../SourcePackages/checkouts/zebrabarcodescanner/Sources/ZebraScannerSDK.xcframework /Users/omran/Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/libsymbolbt-sdk.a ios simulator Command: ProcessXCFramework /Users/omran/Library/Developer/Xcode/DerivedData/../SourcePackages/checkouts/verifonesdk/Sources/VMF.xcframework /Users/omran/Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/VMF.a iOS simulator
这是Xcode的Bug吗?
这不是Xcode的Bug,而是两个XCFramework的modulemap配置存在路径冲突导致的。
Xcode处理XCFramework时,默认会将各框架的Headers内容合并到统一的include目录下,如果两个XCFramework都直接在Headers根目录放置module.modulemap,就会触发文件覆盖冲突。
解决方法
调整XCFramework的目录结构
为每个XCFramework的Headers创建独立子目录,比如把ZebraScannerSDK的.h和module.modulemap放到Headers/ZebraScannerSDK目录下,VMF的放到Headers/VMF目录下,同时修改module.modulemap里的头文件引用路径,确保指向正确位置。在Swift Package中显式配置头文件路径
在Package.swift里为每个二进制目标指定publicHeadersPath,指向各自的子目录,避免Xcode将所有modulemap输出到同一个根include目录。示例配置:
.binaryTarget( name: "ZebraScannerSDK", path: "Sources/ZebraScannerSDK.xcframework", publicHeadersPath: "Headers/ZebraScannerSDK" ), .binaryTarget( name: "VMF", path: "Sources/VMF.xcframework", publicHeadersPath: "Headers/VMF" )
内容的提问来源于stack exchange,提问作者omranK
相关产品推荐
相关产品推荐

