我正在创建一个 Swift 包,它本质上是从 Objective-C 框架生成的多个 XCFrameworks 的包装器,因此可以通过 SPM 安装它们。
就创建 SP 以及将其作为依赖项添加到应用程序的能力而言,一切正常。但是我在 SP 的存储库中包含了一堆非必要的文件,我不想将它们包含在实际的 SP 中——即当 SP 作为依赖项添加时,它们不应该出现在 Xcode 的导航器中。 (这些包括源 Obj-C 框架、自述文件、变更日志、用于演示应用程序的 Xcode 工作区、用于生成 XCFrameworks 的脚本文件等)。
这甚至可能吗?或者 SPM 是否会始终检查整个 repo 并使所有文件对用户可见?
我尝试使用Target
说明符的各种排列:source, path, exclude
但无济于事。
这是我可以通过有效清单获得的最接近的值,但是当我在虚拟 Xcode 应用程序中检查 SP 时,我仍然可以看到包含的 repo 中的所有文件:
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "WrapperSwiftPackage",
platforms: [.iOS(.v13)],
products: [
.library(name: "WrapperSwiftPackage", targets: ["WrapperSwiftPackage"])
],
dependencies: [],
targets: [
.target(
name: "WrapperSwiftPackage",
dependencies: [
"ObjCFramework1",
"ObjCFramework2"
],
path: "", // Set to root directory so we can exclude files below
exclude: [
"CHANGELOG.md",
"Dangerfile.swift",
"README.md",
"Workspace.xcworkspace",
"Scripts/generate-xcframework.sh",
"Scripts/link_git_hooks.sh",
"Objective-C Frameworks/"
],
sources: [
"Sources/WrapperSwiftPackage/main.swift",
"XCFrameworks/ObjCFramework1.xcframework",
"XCFrameworks/ObjCFramework2.xcframework"
]
),
.binaryTarget(name: "ObjCFramework1", path: "XCFrameworks/ObjCFramework1.xcframework"),
.binaryTarget(name: "ObjCFramework2", path: "XCFrameworks/ObjCFramework2.xcframework")
]
)