現象
BuildTools/Package.swift
がこうで、
// swift-tools-version:5.1 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)
に変えてみたけど同じだったのでこっちかな。
// https://github.com/uber/mockolo/blob/0a714a24f74a2dd5f7db9826f5e3c56a729d2622/Package.swift#L24 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ということで。後者はエラーを見る限り適当なパスを指定すれば動く気がする。
*1:いいリンクがあればほしいっす