コマンドラインから実行され、Swifttestを使用してテストされるSwift Package Managerを使用するアプリケーションがあります。私は Xcode を使用しておらず、これが私の最初の Swift プロジェクトであるため、このエラーから抜け出す方法がわかりません。
使用しなくなった依存関係を削除しようとしています。私のPackage.swift
ファイルは次のようになります。
import PackageDescription
let package = Package(
name: "MyApplication",
targets: [
Target(name: "Target1"),
Target(name: "Target2", dependencies: ["Target1"]),
Target(name: "Application", dependencies: ["Target2"]),
Target(name: "Specs", dependencies: ["Target1", "Target2"]),
],
dependencies: [
.Package(url: (test package))
]
)
そして、「Target2」から「Target1」への依存をなくしたいと考えています。このエラーが発生しています:
Linking Application
Undefined symbols for architecture x86_64:
"__TFC10Target1CfT_S0_", referenced from:
_main in main.swift.o
"__TMaC10Target1", referenced from:
_main in main.swift.o
ld: symbol(s) not found for architecture x86_64
このエラーについて私が確認した解決策はすべて Xcode を参照しているため、正直なところ、これをどこで探すべきかさえわかりません。Target1 ファイルは、Target2 ファイルのどこでも使用または参照されていません。アプリケーションの設計は次のとおりです。
├── Package.swift
├── README.md
└── Sources
├── Application
│ └── main.swift
├── Target1
│ ├── Model1.swift
│ └── Model2.swift
├── Target2
│ ├── Model3.swift
│ └── View.swift
└── Specs
├── main.swift
├── Model1Spec.swift
├── Model2Spec.swift
└── Model3Spec.swift
アプリケーション内の私のmain.swift
ファイルはランナーです。ここでは、Target1 クラスの関数の戻り値を Target2 クラスの新しいインスタンスに挿入しているため、2 つのファイルが接続される唯一の場所です。これはおそらく必要以上の情報です。
とにかく、なぜこれが起こっているのですか?Package.swift
実際に依存していないものへの依存を維持する必要があるのはなぜですか?
ご協力いただきありがとうございます。さらに情報が必要な場合はお知らせください。