如何在本地Swift Package中引用另一包的指定库?
Swift包依赖:指定使用本地包中的具体库
你不需要在Bar的dependencies里重复添加FooB的包路径——因为FooB是Foo包的产物,不是独立的Swift包。正确的做法是在Bar的target中明确声明依赖Foo包内的指定产物。
修改后的Bar包Package.swift代码
let package = Package( name: "Bar", dependencies: [ // 仅需引入整个Foo本地包,路径根据你的实际相对位置调整 .package(path: "../Foo") ], targets: [ // 给Bar的业务目标指定依赖Foo包中的FooB库 .target( name: "Bar", dependencies: [ .product(name: "FooB", package: "Foo") ]), // 如果测试目标也需要用到FooB,同样在其依赖中声明 .testTarget( name: "BarTests", dependencies: ["Bar"]), ] )
关键说明
- 依赖整个Foo包:
dependencies中只保留对Foo包的路径引用,SwiftPM会自动识别Foo包内的所有产物。 - 指定具体产物:在需要使用FooB的target(比如示例中的
Bartarget)的dependencies里,用.product(name: "FooB", package: "Foo")明确指定要引入Foo包中的FooB库。 - 多产物同时使用:如果需要同时用Foo和FooB两个库,只需在target的
dependencies中添加两个产物声明:dependencies: [ .product(name: "Foo", package: "Foo"), .product(name: "FooB", package: "Foo") ]
完成上述修改后,在Bar包的代码中import FooB就不会再报错了。
内容的提问来源于stack exchange,提问作者Quambadeur
相关产品推荐
相关产品推荐

