🛠️

M1 Mac: Build PhasesのRun ScriptでMintを使ってR.swiftを実行する

2022/06/09に公開

CocoaPodsをやめてSwift Package Managerに移行作業中、R.swiftをMintで実行するようにするのに躓いたのでメモしておきます。

  • Build PhasesのRun ScriptではHomebrewで入れたコマンドのパスが解決できないためmintが見つからない。
  • mint run R.swift rswiftはmacOS上で実行するもののため、build destinationがiOSになっていると失敗することがある。
  • ソースのimport Rswiftでモジュールが見つからないと言われる。

対応

  1. Swift Package ManagerでプロジェクトにR.swift.Libraryを追加する
    https://github.com/mac-cain13/R.swift.Library

  2. Build PhaseにRun Scriptを追加する

    # M1 Macの場合はHomebrewのパスを追加する
    if [ $(uname -m) = "arm64" ]; then
      export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:${PATH+:$PATH}";
    fi
    
    # Mintでrswiftを実行
    if which mint >/dev/null; then
      xcrun --sdk macosx mint run R.swift rswift generate "${SRCROOT}/R.generated.swift"
    else
      echo "warning: Mint not installed"
    fi
    
    • Based on dependency analysis のチェックマークを外す
    • OutputFilesに$(SRCROOT)/R.generated.swiftを追加する

参照

Discussion