anz blog

SwiftPMで作ったものがMintで実行できない...

2018-08-17 #Swift #SwiftPM

ざっくりまとめ。

  • Mint で作ったCLIアプリが実行できない
    • Executable product not found とかいわれる
  • Mint のバージョンが怪しい...!?
  • Package.swift に products を追記したらイケた!

です。

環境

  • SwiftPM v4.1.0

問題

以前自分のCLIアプリをつくったのだけれど、ふと実行してみたらなんとエラーで実行できない事態に陥ってるのに気づきました。

$ mint run anzfactory/anz

と実行すると...

Executable product not found

とメッセージがでてしまって実行できない。
公開したときはまちがいなく実行できていたのだけれど...🤔

調査

以前は実行できていた...
さらに、clone して swift build とやると問題なくビルドはされる。
このことから、Mint がなにか変わったんだろうか?と当たりをつけて、
とりあえずなにか issue が上がっていないか確認してみました。
するときになるものが

言っていることは僕の事象とちがうのだけれど、きになったのは概要にかかれている Package.swift の書き方がきになりました。

products というものが書かれている。
その中身は .executable(name:,targets:) というもの。
僕の Package.swift にはそのような記述はない。
言われているメッセージ的にもこれなのでは!?🤔

解決

ということで、自分の Package.swift にも追記してみました。

これで再度実行してみると、無事出来ました〜! 🎉
ちなみに products の記述がなくても実行できていた Mint のバージョンは v0.10.2 です。
で、今の最新は v0.11.2 です。(多分 v0.11.x で変わったのかな。。と)

SwiftPM でCLIアプリ作る時なんかは

$ swift package init --type executable

と実行してプロジェクトを作るかと思いますが、現時点ではこれでつくっても、Package.swift にはこの protucts の部分が記載されていないので、
Mint をつかって公開しようと思っている方は自分で書いときましょう〜! 👍

参考

Mint
Swift Package Manager のメモ - mike-neckのブログ