LoginSignup
17
9

More than 3 years have passed since last update.

Swift Package Managerで'No Such Module'した時の対処法

Posted at

はじめに

iOSアプリ開発において、Xcode11からSwift Package Manager(以下、SPM)を公式に使えるようになりました。
導入を検討している人も多いかと思いますが、躓いた箇所があったので対処法の一例としてメモ程度に残しています。

なお、今回の対処法は「Getting 'no such module' error when importing a Swift Package Manager dependency - Stack Overflow」に記述がありました。

What

新しくライブラリを導入するにあたりSPMで管理していく方針にしました。

XcodeでFile → Swift Packages → Add Package Dependency... と順当にライブラリを取り入れるも

*.swiftファイルでimport Hogeと書いてもbuildできず、No such Moduleのエラーが出るばかりでした。

How

以下のスクリプトをTargets → Build Phases → New Run Script PhaseCompile Sourcesの手前に記述します

if [ -d "${SYMROOT}/Release${EFFECTIVE_PLATFORM_NAME}/" ] && [ "${SYMROOT}/Release${EFFECTIVE_PLATFORM_NAME}/" != "${SYMROOT}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/" ] 
then
  cp -f -R "${SYMROOT}/Release${EFFECTIVE_PLATFORM_NAME}/" "${SYMROOT}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/"
fi

今回はFix SPMという名称にしました。

Screen Shot.png

Why

SPMは暗黙的にXcodeプロジェクトのConfigurationを利用しており現状でデフォルトのReleaseDebugにしか対応していないようなので、ビルドしようとしているConfigurationと異なれば、Release用をコピーすることで解決しています。

Xcodeとしては既知の仕様らしいです。
参考: Custom build configuration names

また、上記サイトでは他の解決策も紹介されていたので是非参考にしてください
参考: Swift Package Hack - Álvaro Royo - Medium

現状はなんとかなりましたが、もっと最適な解決策があれば教えていただきたいです!
ありがとうございました!

17
9
1

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
17
9