Xcode10 build system变化

本文解决了在Xcode10中使用Swift新buildsystem遇到的编译错误linkercommandfailedwithexitcode1的问题。通过将buildsystem改回旧版,成功避免了Xcode10新buildsystem带来的兼容性问题。

不知道你有没有遇见过这样的问题:

一个年久失修的项目在Xcode10上跑了一跑,报了个编译错误,linker command failed with exit code 1,右侧还出现了个不能打开的clang文件.如下:

其实这是Xcode10为swift新开发的new build system被设置了成了默认,这个新的build system在Xcode9就已经存在,只不过不是默认选择,如下为Xcode10的截图:File->Project Settings(WorkSpace Settings)

此时把build system改为原来的build system,问题解决。

至于原因:

这里苹果已经给出了已解决的一些问题,至于未解决的还需要大家一起遇见然后解决。

<think>好的,我现在需要帮助用户解决如何在Xcode 16中关闭构建系统的并行化选项来测试解决“Multiple commands produce ‘/xxx.app/Info.plist’”错误的问题。首先,我要回顾之前的对话,确保解决方案的一致性。用户之前已经得到了一些步骤,但这次他们特别提到了关闭Parallelization选项。 首先,我需要确认Xcode 16中Build System的Parallelization选项的位置。根据以往经验,Xcode的设置通常在Preferences里,但不同版本可能有变化。我需要回忆Xcode 16的界面布局,或者检查是否有更新的设置路径。另外,用户可能遇到的问题是构建系统并行处理任务时导致多个任务同时生成Info.plist,从而引发冲突。 接下来,我需要明确关闭该选项的具体步骤。可能的路径是Xcode菜单 -> Preferences -> 某个标签下的选项。可能需要查看Xcode的官方文档或社区讨论,确认Xcode 16是否有调整这个选项的位置。另外,用户可能需要临时关闭该选项来测试是否解决问题,所以步骤需要清晰明了。 同时,我需要考虑用户可能的操作习惯,比如是否熟悉Xcode的设置,是否需要截图或具体菜单项的指示。此外,用户可能在执行步骤后需要重新清理构建和重新编译,这也是解决方案的一部分,需要提醒用户进行这些操作。 另外,考虑到用户之前的问题涉及CocoaPods和路径冲突,关闭并行化可能只是临时解决方案,长期还是需要修复项目配置。因此,在回答中应该提到这一点,避免用户误解关闭该选项是最终解决办法。 最后,生成的相关问题需要与当前主题相关,比如如何彻底解决冲突,或者Xcode 16的其他构建优化,这样用户如果有进一步的问题可以继续参考。</think>以下是在Xcode 16中关闭构建系统并行化(Build System Parallelization)的完整操作指南,用于验证是否与`Multiple commands produce '.../Info.plist'`错误相关: --- ### 关闭Build System Parallelization的步骤 #### 第一步:通过Xcode界面操作 1. **完全关闭Xcode** - 确保所有项目窗口已关闭 2. **修改全局构建系统设置** - 打开Xcode → 顶部菜单选择 `Xcode` → `Settings` (或 `Preferences`) - 切换到 `Build System` 标签页 - 取消勾选 `Parallelize Build` 和 `Build Implicit Dependencies` 选项[^2] ```markdown ![路径示意] Xcode > Settings > Build System > 取消勾选并行化选项 ``` #### 第二步:通过项目配置覆盖(推荐) 1. **强制指定构建模式** - 打开项目 → 选择主工程Target → `Build Settings` - 搜索 `Build System` 或 `Parallelization` - 找到 `Build System` 选项 → 改为 `Legacy Build System` ```swift // 等效的xcconfig文件配置(若使用自定义配置): BUILD_SYSTEM = legacy ``` #### 第三步:验证配置生效 1. **执行深度清理** ```bash rm -rf ~/Library/Developer/Xcode/DerivedData xcodebuild clean -all ``` 2. **重新构建项目** - 使用快捷键 `⌘ + Shift + K` 清理 → `⌘ + B` 重新构建 --- ### 技术原理说明 Xcode 16的**新一代并行构建系统**会加速编译过程,但可能因以下原因引发`Info.plist`冲突: - 多个Target同时向同一路径写入plist文件 - 动态生成的plist文件未正确设置唯一输出路径 - 第三方库(如CocoaPods/SwiftPM)的构建任务与主工程重叠[^1] 关闭并行化后,构建系统将**按顺序执行任务**,更容易暴露文件复制指令的重复问题。 --- ### 扩展建议 - 若关闭并行化后问题消失,可通过以下方式根治: 1. 在冲突Target的`Build Phases`中添加唯一输出路径 ```bash # 在Copy Files Phase设置: Destination = Resources Subpath = UniqueSubfolder ``` 2. 检查所有自定义脚本中涉及`cp Info.plist`的命令 3. 在`Podfile`中为冲突库添加资源排除规则 ```ruby pod 'LibraryName', :exclude_files => '**/Info.plist' ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值