現象
BuildTools/Package.swift
がこうで、
import PackageDescription
let package = Package(
name: "BuildTools",
platforms: [.macOS(.v10_11)],
dependencies: [
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.49.0"),
.package(url: "https://github.com/uber/mockolo.git", from: "1.1.2"),
],
targets: [.target(name: "BuildTools", path: "")]
)
Build Phaseにこれを追加するとコケる。
swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift
エラーはこれ。
'buildtools': error: invalidManifestFormat("<unknown>:0: warning: using sysroot for \'iPhoneSimulator\' but targeting \'MacOSX\'\n<unknown>:0: error: unable to load standard library for target \'x86_64-apple-macosx11.0\'", diagnosticFile: nil)
原因
原因はこれで、
macOS 向けにビルドしようとしているのに、利用するSDKがiOSシミュレーター用になっているため
XcodeのBuild Phasesでmintを実行する時の注意点 - Qiita
"macOS向けに"というのはBuildTools/Package.swift
のこの部分?
platforms: [.macOS(.v10_11)],
と思って.iOS(.v13)
に変えてみたけど同じだったのでこっちかな。
platforms: [
.macOS(.v10_15),
],
ほげ
Build Phaseのスクリプトを変更すればいい。
# before
# swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift
xcrun --sdk macosx swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift
xcrunは何者かというのと、swiftにも--sdk
オプションがあるけどそれだと動かないのは宿題*1ということで。後者はエラーを見る限り適当なパスを指定すれば動く気がする。