Xcode14和Xcode13的clang版本有区别,对应的,BuildSetting中的参数也有些许的区别
EAGER_LINKING
仅 Swift 的框架和动态库目标可以使用 EAGER_LINKING 构建设置选择新的构建系统优化。启用此功能后,Xcode 会在 Swift 编译期间发出额外的工件,这允许 Xcode 更早地取消阻止下游目标的链接,从而增加构建中的并行性。
FUSE_BUILD_SCRIPT_PHASES
并行执行脚本:Build Phases 中有个 Run Script 的配置项,在 Xcode 14 之前,不管这些脚本是否有依赖,Xcode 默认都是执行完一个脚本再去执行另一个,有些脚本执行会比较耗时。在 Xcode 14 中,允许开启并行执行脚本,我们可以在 Build Settings 中配置 FUSE_BUILD_SCRIPT_PHASES
为 YES
开启(⚠️ 需要注意脚本与脚本之间有依赖关系的情况,此时不能盲目开启并行脚本处理,苹果提供了沙箱执行脚本机制来解决脚本依赖的 case,可以参考 session 110364):
ENABLE_USER_SCRIPT_SANDBOXING
可能就是上面说的那个沙箱机制,没找到。。
INFOPLIST_KEY_LSApplicationCategoryType
是一个分类,里面是关于app的类型的分类如:书籍、商务、开发工具、教育、企业、金融、游戏㩐等;
INFOPLIST_KEY_LSUIElement
如果该关键字被设为YES,启动服务会将该应用程序作为一个用户界面组件来运行。用户界面组件不会出现在Dock或强制退出窗口中。虽然它们通常作为后台应用程序运行,但是如果希望的话,它们也可以在前台显示一个用户界面。点击属于用户界面组件的窗口,应用程序将会处理产生的事件。
Dock和登录窗口是两个用户界面组件应用程序。默认为NO
INFOPLIST_KEY_LSBackgroundOnly
如果该关键字存在并且被设为YES,启动服务将只会运行在后台。您可以使用该关键字来创建无用户界面的后台应用程序。如果您的应用程序使用了连接到窗口服务器的高级框架,但并不需要显示出来,您也应该使用该关键字。后台应用程序必须被编译成Mach-O可执行文件。该选项不适用于CFM应用程序。默认为NO
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。
INFOPLIST_KEY_MetalCaptureEnabled
Metal是一种 Apple 图形技术,可让游戏和 App 近乎直接地访问图形处理器 (GPU)。Metal 在复杂的 3D 环境(如游戏)、视频编辑 App(如 Final Cut Pro)和其他 App 中提供了更好的图形性能。
有人说iOS15无法调起Broadcast扩展,是这个的原因,我没接触过
TAPI_ENABLE_PROJECT_HEADERS
CLANG_LINK_OBJC_RUNTIME //13 上面是yes,14是NO
当使用Objective-C代码链接目标时,在Foundation中隐式链接(并且部署回较旧的操作系统)向后兼容库,以允许较新的语言功能运行在,不支持运行时操作系统上运行。大多数使用Objective-C的target都应该使用,尽管在少数情况下,目标应该选择退出这种行为。
RUN_DOCUMENTATION_COMPILER
是否编译文档
DOCC_EXTRACT_SWIFT_INFO_FOR_OBJC_SYMBOLS
把swift的信息基于OC的符号表导出成为文档
DOCC_EXTRACT_OBJC_INFO_FOR_SWIFT_SYMBOLS
把swift的信息基于OC的符号表导出成为文档
DOCC_HOSTING_BASE_PATH
文档的默认目录
OTHER_DOCC_FLAGS
DOC的其他编译标识
CLANG_CXX_LIBRARY
编译器的C++编译选项
https://www.sohu.com/a/557548148_121124372
https://xiaozhuanlan.com/topic/9706284531
https://www.jianshu.com/p/59279b018217