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

求助:创建Objective-C版Notification Service Extension构建失败,Swift正常且报LLVM 9.0错误

解决Objective-C Notification Service Extension构建失败(LLVM 9.0错误:no such file or directory: '[-Wunknown-warning-option]')

这个问题我之前碰到过好几次,核心原因基本都是Objective-C扩展目标的编译警告参数配置出了问题——Swift目标因为默认配置更简洁,所以没触发这个错误。下面是一步步的排查和解决方法:

1. 定位到Extension目标的Build Settings

打开Xcode,在左侧项目导航栏里选中你的Objective-C版「Notification Service Extension」目标,然后切换到顶部的「Build Settings」标签(记得切换到「All」视图,别用「Basic」)。

2. 检查并修复错误的编译参数

在搜索框里输入「Other C Flags」和「Other Warning Flags」,分别查看这两个选项:

  • 你大概率会看到[-Wunknown-warning-option]这种带方括号的参数——这是格式错误!LLVM编译器不识别带方括号的参数,正确写法是-Wunknown-warning-option(直接去掉方括号)。
  • 如果这个参数不是必须的,直接删掉即可;如果需要保留,修改成正确的单参数格式。
  • 同时检查有没有其他从主工程继承来的、LLVM 9.0不支持的警告开关(比如高版本编译器才有的新警告参数),有就删掉或者替换成兼容的参数。

3. 阻断主工程参数的无效继承

有时候主工程的复杂编译参数会被Extension自动继承,但Objective-C Extension根本不需要这些配置:

  • 点击「Other C Flags」和「Other Warning Flags」旁边的小箭头(显示「Inherited」的那个),勾选「Override」选项,清空里面的内容,只保留Extension必要的编译参数(通常默认空着就能正常构建)。

4. 核对编译器版本一致性

如果主工程用的是比LLVM 9.0更高的编译器版本,而Extension目标的编译器版本被单独设置成了LLVM 9.0,也会出现参数不兼容:

  • 在Build Settings里搜索「Compiler for C/C++/Objective-C」,确保Extension目标的编译器版本和主工程一致(比如都选「Default Compiler (Apple Clang)」)。

5. 清理项目后重建

做完上面的修改后:

  • 按下Cmd+Shift+K清理项目缓存;
  • 再按下Cmd+B重新构建Extension目标;
  • 如果还是报错,试试删除Derived Data:Xcode菜单 → Preferences → Locations → Derived Data,点击箭头打开文件夹,删除当前项目的Derived Data文件夹,再重新构建。

额外排查点:Pods配置影响

如果你的项目用了CocoaPods,检查Podfile里是否给Extension目标添加了不必要的依赖,或者Pod的配置里带了不兼容的编译参数。可以尝试在Podfile里给Extension目标单独设置编译参数,或者更新Pods到兼容LLVM 9.0的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:23:32