如何通过Swift Package Manager创建不干扰原有包结构的Package 3?
可以通过Swift Package Manager实现且不破坏原有结构
完全可以做到,SPM支持通过路径引用现有目录中的文件来构建新包,无需移动或修改原有Package 1、Package 2的文件结构。具体实现方式如下:
步骤1:创建Package 3的基础结构
在与Package 1、Package 2同级的目录下新建Package3文件夹,执行初始化命令创建SPM包(根据需求选择库或可执行文件类型):
swift package init --type library
步骤2:修改Package3的配置文件
打开Package3目录下的Package.swift,在target的sources参数中直接指定原有文件的相对路径,示例配置如下:
// swift-tools-version: 5.9 import PackageDescription let package = Package( name: "Package3", products: [ .library( name: "Package3", targets: ["Package3"]), ], targets: [ .target( name: "Package3", sources: [ "../Package1/file12.swift", "../Package1/folder/file13.swift", "../Package2/folder/file23.swift" ]), ] )
关键说明
- 这种方式只是引用文件路径,不会对原有Package 1、Package 2的文件或目录结构做任何修改,完全保留它们的独立性。
- 如果引用的文件依赖原有包中的其他文件(比如file12依赖file11),需要将依赖的文件也添加到Package3的
sources中,否则会出现编译错误。 - 也可以选择在根目录创建一个统一的
Package.swift,将三个包作为子target管理,同样能实现复用文件且不破坏原有结构的效果。
内容的提问来源于stack exchange,提问作者ejejes
相关产品推荐
相关产品推荐

