LoginSignup
5
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-09

↓のものは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 以外の環境変数をクリアし、そのような場合にも影響しないようにしている。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2