web-dev-qa-db-ja.com

Swift app:静的ライブラリをインポートするフレームワークをインポートするときに「必要なモジュールがありません」

これが私の設定です:

  1. Statと呼ばれるObjective Cコードの静的ライブラリ。
  2. A Swift独自のクラスでStatのコードを使用するフレームワーク(このフレームワークはDynと呼ばれます)。静的ライブラリとこのフレームワークは同じXcodeにあります事業。
  3. 上記のプロジェクトをサブプロジェクトとして含み、DynにリンクするMacアプリ/プロジェクト。

私のアプリには次のようなコードがあります:

import Cocoa
import Dyn
...
SomeDynClass().doSomething()

しかし、コンパイルしようとすると、import Dyn。エラーは

error: missing required module ‘Stat'

私のアプリは私のフレームワークをうまく見つけることができるようですが、どういうわけか私の静的ライブラリのモジュールも見つける必要がありますか?

Statには、非常に基本的なモジュールファイルがあります。

module Stat {
    header "Stat.h"
    export *
}

Macアプリのフレームワークの検索パスをStatに向ける必要があると思いますが、理由も方法もわかりません。どうすればこれを解決できますか?

18
jbrennan

Targetを選択し、Build Settingsに移動してImport PathsSwift Compiler-Search Pathsセクション内に設定します。

${SRCROOT}/Stat

通常、モジュールの名前はライブラリと同じですが、module.mapを使用してディレクトリをどのように設定したかはわかりません(おそらくDynという名前にできますが、その場合はインポートパスはその名前を反映します。

ビルド設定> Swiftコンパイラ>検索パス:

enter image description here

EnterまたはTabキーを押すと、$ {SRCROOT} /(module.mapがあるディレクトリ)が自動的に解決されます。

18
l'L'l

SQLite3パッケージを含む単体テストプロジェクトで同じエラーが発生しました。パッケージを追加した後、ユニットテストは常に「必要なモジュールSQLiteObjcがない」というエラーをスローします

単体テストターゲットのビルド設定で「Force Package Info Generation」のオンとオフを切り替えて修正しました

0
Tomasen