安装John Sundell's Publish后编译报错,寻求解决方案
解决Publish构建时CollectionConcurrencyKit平台版本冲突问题
问题背景
按标准流程安装Publish:
git clone https://github.com/JohnSundell/Publish.git cd Publish make
生成/usr/local/bin/publish可执行文件后,创建并初始化站点项目:
mkdir Saturday && cd Saturday publish new
打开项目的Package.swift(已指定仅支持macOS 12)并保存后,执行构建(cmd-B)时触发错误:
The package product 'CollectionConcurrencyKit' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
注:安装Publish时拉取的是CollectionConcurrencyKit 0.1.0,但站点项目自动拉取了0.2.0版本。
解决方案
方案1:锁定CollectionConcurrencyKit版本为0.1.0
修改站点项目的Package.swift,在依赖列表中明确指定CollectionConcurrencyKit的版本,与安装Publish时使用的版本保持一致:
let package = Package( name: "Saturday", platforms: [.macOS(.v12)], dependencies: [ .package(url: "https://github.com/johnsundell/collectionConcurrencyKit.git", exact: "0.1.0"), .package(url: "https://github.com/JohnSundell/Publish.git", from: "0.9.0"), ], targets: [ .target( name: "Saturday", dependencies: ["Publish"] ), .testTarget( name: "SaturdayTests", dependencies: ["Saturday"] ) ] )
修改后执行swift package update,再重新构建项目。
方案2:升级Publish到最新版本
重新安装最新版Publish,确保其依赖的CollectionConcurrencyKit版本与项目要求匹配:
cd Publish git pull origin main make clean && make
之后可重新创建站点项目,或在现有项目中更新Publish依赖版本:
.package(url: "https://github.com/JohnSundell/Publish.git", from: "<最新版本号>"),
执行swift package update后重新构建。
方案3:为目标显式指定平台范围
在项目的Package.swift中,给目标单独指定仅支持macOS平台,避免SwiftPM自动解析其他平台的依赖要求:
.target( name: "Saturday", dependencies: ["Publish"], platforms: [.macOS(.v12)] ),
内容的提问来源于stack exchange,提问作者Mozahler
相关产品推荐
相关产品推荐

