我有一个大型的Xcode项目,混合了Swift和Objective C代码库。我的目标之一是QuickLook插件,它不使用任何Swift文件。
当构建QuickLook目标时,每个引用ObjC类的Swift文件(在主目标中正确桥接)都会报告 “Cannot find type in scope” 错误-即使这些Swift类都没有包含在给定的目标中。
我尝试在发布和调试时将SWIFT_COMPILATION_MODE
更改为singlefile
,但没有帮助。为了绝对确保没有Objective C类在此目标中导入任何Swift文件,我还设置了一个预处理器宏来保护包含Project-Swift.h
文件。我找不到一个标志来在构建时完全跳过Swift编译阶段。
Swift文件是否会自动编译,不管我做什么,也不管它们的目标成员是谁?
1条答案
按热度按时间jpfvwuh41#
对于未来与之斗争的人:
当编译QuickLook扩展时,即使是模拟器,它也会尝试编译任何可能包含它的其他目标。我有一个旧的构建目标,不再维护。在某些时候,该目标的桥接头已经落后于实际项目,并且由于某种原因,Xcode对每个Swift类都抛出错误。
检查所有包含扩展的目标,甚至测试,并确保它们正确编译,或者完全删除它们。
这些错误在日志或UI中与特定目标没有关联,这可能是Xcode错误。