Swift
SwiftPackageManager

外部ライブラリをimportして実行可能な*.swiftファイルをつくる - Swift Package Manager 編

More than 1 year has passed since last update.

↓のものはCarthageだったが、そのSwift Package Manager (Swift 4)でのやりかた

外部ライブラリをimportして実行可能な*.swiftファイルをつくる

https://qiita.com/banjun/items/3f22b4951bca07cc55c7

次のような先頭行をもつ main.swift を使うと、 cloneしてきて ./main.swift で(ビルド&)実行できる。

#!/bin/sh

":" //#; DIR=$(dirname $(readlink $0 || echo $0))
":" //#; env -i PATH=$PATH swift build --package-path "$DIR" -Xswiftc -suppress-warnings -Xswiftc -sdk -Xswiftc $(xcrun --show-sdk-path --sdk macosx) && exec "$DIR/.build/debug/bansan" "$@"
import Foundation
import SourceKittenFramework

// SourceKittenFrameworkをつかうコード

※実行モジュール名(Package.swiftのexecutable)が bansan のとき

SPMでは、メインファイルは main.swift で決め打ちのようで、メインのスクリプトとして他のファイル名を使うことはできない。executableのターゲットの、メインファイルではないファイルでは、トップレベルに #! を置くとビルドエラーになる(Hashbang line is allowed only in the main file)。つまり1パッケージに複数の hoge.swift, fuga.swift を置くという運用をしたい場合は、もうすこし複雑になりそう。


追記

iOSアプリのビルドフェーズから実行すると、環境変数に引きずられて、iPhone SDKで swift build してしまい失敗することがある(失敗しないこともある)。env -i PATH=$PATHPATH 以外の環境変数をクリアし、そのような場合にも影響しないようにしている。