web-dev-qa-db-ja.com

Xcode 11のローカルSwiftパッケージに依存関係を追加します

ローカルに依存関係を追加しようとしていますSwift Xcodeプロジェクトのパッケージです(ファイルのURLを使用して依存関係を追加したくないfile://me/dev/app/packageこれは他の環境と共有できないため)

パッケージをターゲットにドラッグアンドドロップしてみました。これにより、「ライブラリとバイナリをリンク」ビルドフェーズで追加できたプロジェクト内のパッケージへの参照が作成されますが、ライブラリはまだ見つかりません。

No such module 'Analytics'

私の元の構成

enter image description here

ドラッグ&ドロップ後

enter image description here

そしてこれが私のパッケージ構成です:

// Swift-tools-version:5.1
import PackageDescription

let package = Package(
    name: "Analytics",
    products: [
        .library(name: "Analytics", targets: ["Analytics"]),
    ],
    dependencies: [
        .package(path: "../SomeOtherPackage"),
    ],
    targets: [
        .target(name: "Analytics", dependencies: [
            "SomeOtherPackage",
        ]),
    ]
)

ターゲットのリンクされたバイナリおよび/またはバンドルリソースおよび/またはコンパイルされたソースにパッケージを含めましたが、役に立ちませんでした:

enter image description here

私は読んだ この長い議論 それは決定的ではないようです。

これが私が試していることの簡単な例です: https://github.com/gsabran/SPM_Xcode_test

3
Guig

これが文字通り私がやっていることであり、それはうまくいきます... Xcode 11.2

I.パッケージを準備する

  1. ファイル>新規> Swiftパッケージ>空のフォルダを選択(または新規作成)>ライブラリ名を入力(MyLibrary)

  2. ここでプロジェクトでMyLibrary.Swiftを見つけてパブリック構造と変数を作成するため、アプリで使用するエクスポートがいくつかあります(静的定数と固定UTを作成しました)

  3. ビルド> OK>プロジェクトを閉じる

II。プロジェクトを準備する

  1. ファイル>新規>プロジェクト> iOS>シングルビューアプリ>名前を入力(MyApp)>次へ>上記と同じフォルダーを選択(デフォルト)>作成

  2. ビルド> OK

  3. Finderから、MyLibraryフォルダをXcode Project Navigatorのプロジェクト名のすぐ下にドラッグします。

  4. ビルド> OK

  5. プロジェクトナビゲーターの[MyAppプロジェクト]アイコンをクリックし、[MyAppアプリケーションターゲットを選択]> [フレームワーク、ライブラリ]セクションをクリックします。[+]をクリックします>最上位のワークスペースセクションで、[MyLibrary]> [追加]を選択します

  6. クリーン>ビルド> OK

  7. ContentView.Swiftを開き、タイプimport MyLibrary(オートコンプリートはすでに表示されています)「Hello、World」を「(MyLibrary.text)」に置き換えます

  8. ビルドと実行> OK

それでおしまい。

使用された相対パスを確認するには、TextEditでproject.pbxprojを開いてください。

Swift package relative path

更新:
注1-クリーン後のパッケージ解決の遅延を検討したので、しばらくの間、ここで1〜2分、報告されたエラーでビルドは正確に失敗しますが、その遅延の後、インデックスが再起動し、次のビルドが成功したことがわかります。
注2-2番目の依存パッケージをグラフに追加すること(MyApp> MyLibrary> AnotherLibrary)は同じです。

8
Asperi