You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xcodebuild构建依赖SPM安装的CocoaLumberjack项目提示module map找不到怎么办

问题原因

该错误由Xcode GUI与命令行xcodebuild的默认构建路径逻辑差异导致:

  • Xcode GUI默认使用全局派生数据(DerivedData)目录作为构建输出根路径,SPM会自动在该路径下生成依赖库的module map文件,因此构建可以正常完成。
  • 未指定参数直接执行xcodebuild clean build时,工具会默认将构建产物输出到当前项目目录下的build文件夹,而SPM的模块映射生成逻辑不会自动在该路径下创建对应的GeneratedModuleMaps目录和依赖的module map文件,最终抛出找不到文件的错误。

解决方案

方案一:指定派生数据路径(推荐)

执行构建命令时显式添加-derivedDataPath参数,指定统一的派生数据输出目录即可适配SPM的生成逻辑,示例命令如下:

# 替换为你自己项目的Scheme名称
xcodebuild clean build -scheme TestAppObjC -derivedDataPath ./DerivedData

如果需要指定运行目标(比如模拟器/真机),可以补充destination参数:

# 模拟器构建示例
xcodebuild clean build -scheme TestAppObjC -destination 'platform=iOS Simulator,name=iPhone 14' -derivedDataPath ./DerivedData

方案二:显式指定使用新构建系统

针对Xcode 12及以上版本,可以直接在构建命令中指定使用新构建系统,规避旧构建系统对SPM的适配问题:

xcodebuild clean build -scheme TestAppObjC -UseModernBuildSystem=YES

方案三:修改项目构建设置(兼容无需改命令的场景)

如果不方便修改构建命令,可以在项目的Build Settings中找到MODULEMAP_FILE_SEARCH_PATHS配置项,添加递归搜索路径:

$(BUILD_DIR)/GeneratedModuleMaps/$(PLATFORM_NAME)

配置完成后直接执行原有xcodebuild clean build命令即可正常构建。

内容的提问来源于stack exchange,提问作者rogueserenity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:36:03