我正在使用没有与xcodeproject文件关联的Swift Package Manager,并且在通过他的终端进行构建时出现错误。当我调用swift build
命令时,我收到一个错误,指出MacOS构建失败。我正在构建的程序包不支持MacOS(它使用UIKit),仅支持iOS。我想不出一种方法来调用该命令以仅指定该构建针对iOS。我在Google周围搜索时没有运气。是否存在从终端为iOS构建SPM软件包的正确语法?
我使用的Swift版本是:“ Apple Swift版本5.2.4(swiftlang-1103.0.32.9 clang-1103.0.32.53)”
我已经在Package.swift文件中指定了平台
let package = Package(
name: "Package",
platforms: [.iOS(.v10), ],
products: [
...
我在github https://github.com/mike011/Swift-Package-Manager-Example上创建了一个示例项目。当我运行swift build
时,它会失败并显示
/git/Swift-Package-Manager-Example/Sources/Swift-Package-Manager-Example/iOSSpecificFile.swift:9:8: error: no such module 'UIKit'
import UIKit
^
/git/Swift-Package-Manager-Example/Sources/Swift-Package-Manager-Example/iOSSpecificFile.swift:9:8: error: no such module 'UIKit'
import UIKit
^
答案 0 :(得分:2)
SwiftPM当前尚无法禁止针对特定平台进行构建,但是如果您愿意,可以利用最低构建版本来在不支持的平台上导致编译时错误。
例如,如果您不想允许在macOS上构建,则可以使用平台版本:清单的.macOS("99.0")
部分中的platforms
,您将得到类似的编译警告和错误在Xcode中进行构建时会出现以下情况:
The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 99.0, but the range of supported deployment target versions is 10.8 to 10.16.99
Invalid Darwin version number: macos99.0
Invalid version number in 'target x86_64-apple-macos99.0'
答案 1 :(得分:0)
我通过将所有文件包装在 #if !os(macOS)
#endif
块中来“解决”了这个问题。所以这个包是在 Mac 上构建的,但它没有任何内容。