升级到Xcode 9后的一段时间,我发现我无法再使用Swift 3.1.1快照构建基于Kitura的项目(我已经通过swiftenv安装了该项目。)
当我运行swift build
时,我会得到一些构建时间:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes:8:28: error: unknown key 'SwiftImportAsNonGeneric'
SwiftImportAsNonGeneric: true
^
<unknown>:0: error: could not build Objective-C module 'Foundation'
似乎Swift和Xcode之间存在依赖关系,而Xcode 9不再与Swift 3.1.1(或更早版本)快照完全兼容。我相信这可能是因为我的项目使用了Foundation,而Mac上的Foundation是作为Xcode的一部分提供的,而在Linux上它是Swift快照的一部分(通过swift-corelibs-foundation)。
答案 0 :(得分:0)
我找到了解决这个问题的 解决方案:如果我保留了Xcode 8.3.3的副本(例如在/Applications/Xcode8.3.3.app
中),那么我可以使用sudo xcode-select -s /Applications/Xcode<version>.app/Contents/Developer
来在使用SPM构建之前选择合适的一个,然后我可以在同一系统上构建Swift 3.1.1和4.0项目。
然而,这感觉有点笨重。每次我使用&#39;其他&#39; Swift版本,我必须确保运行xcode-select
,否则构建将失败。在这种情况下,有多个版本的Xcode是正确的解决方案,还是我错过了使用Xcode 9的技巧?