web-dev-qa-db-ja.com

Swift Package Managerの依存関係をインポートするときに「そのようなモジュールはありません」というエラーが表示される

私はXcode 11 Beta 4を実行しています。CocoaPodsを使用していて、依存関係の1つをSwift Package Managerと一緒に、フレームワークではなく静的ライブラリとして使用したいと考えていました。新しいプロジェクトでXcode 11で作成した依存関係は正常にインポートできますが、私の既存のCocoaPodsワークスペースではインポートできません。

関連している可能性が高いと思いますが、Xcodeでこのリンク警告も表示されます。

directory not found for option '-L/Users/username/Library/Developer/Xcode/DerivedData/App-axanznliwntexmdfdskitsxlfypz/Build/Products/Release-iphoneos

警告が出された後、ディレクトリが存在するかどうか確認しに行ったところ、実際に存在しています。 CocoaPodsの存在以外、新しく作成したプロジェクトと私の古いプロジェクトの間に意味のある違いはありませんでした。

任意のポインタをいただければ幸いです。

11
Adar Hefer

Swiftパッケージマネージャーはプロジェクトの構成名に暗黙的に依存していることが判明しました。リリース/デバッグではなくlive/qaでそれらを使用し、それらを元に戻すと問題が解決しました。非常に奇妙ですが、私は読者の皆様のトラブルを解消してください。

17
Adar Hefer

@AlexandreMorgadoの回答に基づいて、ソースをコンパイルする前にビルドフェーズでこのスクリプトを実行することをお勧めします。その後、アーカイブ時に機能します。

enter image description here

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
23
sliwinski.lukas

1週間この問題と戦った後、私はスキームと事前アクションを使用した回避策を開発しました。

「ベータ」という設定があるので、XcodeはSPMの依存関係をコンパイルできません。 XcodeがSPMの依存関係をSwiftモジュールとしてコンパイルし、DeriverDataのBuild/Products/Release-iphoneosフォルダーにファイルを追加することを認識しました。

そこで、Xcodeでスキームを作成し、ビルドの実行前アクションにこの実行スクリプトを追加しました。

enter image description here

cp -f -R "${SYMROOT}/Release${EFFECTIVE_PLATFORM_NAME}/" "${SYMROOT}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/"

このスクリプトはビルドプロセスの前に実行され、デフォルトでXcodeによって生成されたファイルとモジュールをコピーしますRelease-iphoneosフォルダーから構成フォルダー、Beta-iphoneos、私の場合。

コンテンツをRelease-iphoneosから$ configuration $ -iphoneosフォルダーにコピーした後、Xcodeはプロジェクトを正しくコンパイル、ビルド、実行します。

8
alemorgado