【发布时间】:2021-09-29 19:22:08
【问题描述】:
我正在创建一个 Swift 包,它本质上是从 Objective-C 框架生成的多个 XCFrameworks 的包装器,因此它们可以通过 SPM 安装。
就创建 SP 以及将其作为依赖项添加到应用程序的能力而言,一切正常。但是我在 SP 的存储库中包含了一堆我不想包含在实际 SP 中的非必要文件 - 即当 SP 作为依赖项添加时,它们不应出现在 Xcode 的导航器中。 (这些包括源 Obj-C 框架、README、Changelog、用于演示应用的 Xcode Workspace、用于生成 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")
]
)
【问题讨论】:
标签: swift swift-package-manager swift-package exclude