全部的错误信息如下(省略部分路径):
error: Multiple commands produce
'/Users/xxx/Library/Developer/Xcode/DerivedData/.../iphoneos/SDWebImageBPGCoder.framework':
1) Target 'SDWebImageBPGCoder' has create directory command with output '/Users/.../iphoneos/SDWebImageBPGCoder.framework'
2) Target 'SDWebImageBPGCoder.default-bpgenc' has create directory command with output '/Users/.../iphoneos/SDWebImageBPGCoder.framework'
大致原因就是 2 个 framework
要写入到同一个文件, 就报出了这个错误.
解决过程
SDWebImageBPGCoder.framework
是我需要的, 但是 SDWebImageBPGCoder.default-bpgenc
却并不知道是什么东西, 于是看一下 Pod
的 target 下.
发现如图情况:
因为以前遇到过类似的情况, 当时 2 个 framework
是因为未配置 iOS 版本
的问题导致的.
看看 Podfile
的配置情况
pod 'SDWebImageBPGCoder', '~> 0.6.0'
pod 'SDWebImageBPGCoder/bpgenc', '~> 0.6.0'
emmmm... 是这里配置的问题吗?
看了下 .podspec
的配置, 既然子模块是依赖于主模块的, 去掉这行好了.
pod 'SDWebImageBPGCoder', '~> 0.6.0'
然后 pod install
再看只剩下 SDWebImageBPGCoder
.
Command + B
...
Build Succeeded
!
以前的确是没有注意过还有这样的问题存在, 也是在 Xcode 10 之后才开始出现各种原因导致 Multiple commands produce
这样的编译错误.
一般此类错误可以通过 File
->Workspace Settings...
->Build System
修改为 Legacy Build System
来解决. 如图:
但是这算是逃避的一种做法, 还得找到真正的原因才能从根本上解决掉问题.