如何导入名称含横杠的framework且无需重命名重建?
带横杠名称Framework的导入解决方案
报错原因说明
import Some-Module:Swift语法会把横杠识别为一元减号运算符,不符合模块名命名规范,触发语法错误import Some_Module:系统默认不会自动将模块名的横杠替换为下划线做匹配,因此报模块不存在错误
你之前修改module.modulemap后出现链接失败,是因为没有显式指定链接的实际二进制名称,按以下两种方案操作即可,无需重命名、重编译原框架。
方案1:修改Framework内置模块映射(操作简单)
- 访达中右键点击
Some-Module.framework,选择「显示包内容」,进入Modules目录,打开module.modulemap文件 - 替换文件内容为以下格式,必须添加
link指令指定原框架的实际名称:
framework module Some_Module { umbrella header "Some-Module.h" export * module * { export * } // 显式指定链接的二进制文件名,和原框架名称完全一致即可解决链接错误 link "Some-Module" }
- 清理项目编译缓存后,在代码中使用
import Some_Module即可正常导入使用
方案2:项目侧配置适配(无需改动原Framework文件)
如果不希望修改原Framework的内部文件,可直接在你的项目中配置编译参数:
- 打开Xcode项目的Build Settings,找到
OTHER_SWIFT_FLAGS配置项 - 新增以下两个参数,注意将
<框架所在目录路径>替换为你本地存放Some-Module.framework的目录绝对/相对路径:
-Xcc -fmodule-name=Some_Module -Xcc -I<框架所在目录路径>
- 清理编译缓存后,代码中使用
import Some_Module即可正常导入
内容的提问来源于stack exchange,提问作者alekop
相关产品推荐
相关产品推荐

