メインコンテンツに移動

バイナリー配布

FSWATCH

ソフトウェアを作成し,他人に配布する場合,コンパイル済みバイナリーを配布すれば,ユーザーはクリックするだけで利用できる.それは
   ***.pkg
というファイル形式になる.もう少し大規模なソフトであれば,それをディスクイメージ
   ***.dmg
にしても良いかもしれない.

  1. XCodeで作成した場合:XCodeを用いて作成できる.
  2. その他のソフトの場合
    1. 例えばLinux用のソフトなど,適当な場所(普通は/usr/local)にインストールすることになるだろう.そこで,make install する前に,/usr/local フォルダーの監視ソフトfswatchを実行する.

      fswatch -x /usr/local > files.log &
    2. そして make install を実行すると,/usr/local への操作が files.log に記録される.fswatch は kill によって終了させればOK

      kill -9 %1
    3. fswatch_analyze.sh は, fswatch の記録を分析し,必要なファイルを指定したフォルダーにコピーする.すなわち

      fswatch_analyze.sh -c binary files.log

      これで,files.log でCreateしたと記録されているファイルのコピーが,binary フォルダーにコピーされる.

    4. 最後にパッケージを作成する.パッケージ管理ソフトに登録するべき,そのソフトの名称,パッケージファイルの名前,コピーしたフォルダーが必要である.

      pkgbuild --identifier my_software_name --root binary  my_software_version-osx.pkg

fswatch + pkgbuild はなんともお手軽にパッケージを作成できるが,中のライブラリーが他のライブラリーに依存しているのか的なことはチェックしていない.

あ,otool で検定することもできるのか・・・そいつはいい考えだけど,まだ書いてねっす♪

MacOS豚リンゴ

当面の間, IntelとM1/M2/M3/M4の両方に対応したライブラリーを作る必要がある.これはlipo油というコマンドをAppleが用意しているので,それで豚(FAT)ライブラリーにすれば良い.が,しかし,たくさんあって面倒なのでスクリプトを使う.

ライブラリーファイルの一覧 | fatty_apple.sh アーキテクチャ1フォルダ アーキテクチャ2フォルダ 豚小屋

によって,以下の作業が行われる

  • 豚小屋フォルダが空でなければ,停止
  • アーキテクチャ1フォルダ/入力ファイル名 がNon-Fatファイルであれば,アーキテクチャ名をゲット
  • アーキテクチャ2フォルダ/入力ファイル名 がNon-Fatファイルであれば,アーキテクチャ名をゲット
  • 2つのライブラリ(dylibとかaとか. 多分実行ファイルもできる)にアーキテクチャ名を追加して豚にし,豚小屋にぶっこむ

2020年に初版を作成して以来, 久しぶりに追加機能をつけた.

  • アーキテクチャ1フォルダに色々なファイルがあり,アーキテクチャ2フォルダに色々なファイルがあるとする
fatty_apple.sh アーキテクチャ1フォルダ アーキテクチャ2フォルダ
  • アーキテクチャ1フォルダーのファイルを検索し,ビルドした実行ファイル, ダイナミックライブラリ.dylib, 静的ライブラリ.aを見つけた場合に アーキテクチャ2フォルダーで対応するファイルを探し
  • 豚ファイルを作成し,アーキテクチャ1フォルダーをブタに変更する
  • じゃけん,アーキテクチャ1フォルダーでパッケージ作ったらそれでよかとよ♪
File attachments
添付 サイズ
MacOS豚リンゴ 850 バイト
MacOS豚リンゴ(新型) 1.62 KB