2017-10-19 87 views
0

升级到Xcode 9后的一段时间,我发现我已经无法使用Swift 3.1.1快照创建基于Kitura的项目(我已经安装了该项目通过swiftenv)。Swift 3.1.1编译错误:未知键'SwiftImportAsNonGeneric'

当我跑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' 

似乎有斯威夫特和Xcode中,Xcode中和9之间的依赖不再与斯威夫特3.1.1完全兼容(或更早)的快照。我相信这可能是因为我的项目使用了Foundation,Mac上的Foundation是作为Xcode的一部分提供的,而在Linux上它是Swift快照的一部分(通过swift-corelibs-foundation)。

回答

0

我没有找到一个解决这个问题:(例如,在/Applications/Xcode8.3.3.app)如果我继续的Xcode 8.3.3周围的副本,然后我可以使用sudo xcode-select -s /Applications/Xcode<version>.app/Contents/Developer之前与SPM建设选择合适的一个,和我然后可以在同一个系统上构建Swift 3.1.1和4.0项目。

但是,这感觉有点笨拙。每次我使用“其他”Swift版本构建项目时,我必须确保运行xcode-select,否则构建将失败。在这种情况下,有多个版本的Xcode是正确的解决方案,还是我错过了Xcode 9的一个技巧?