【问题标题】:Swift Package - How to exclude files in root git directory from the actual Swift Package?Swift 包 - 如何从实际的 Swift 包中排除根 git 目录中的文件?
【发布时间】: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


    【解决方案1】:

    虽然不确定这是否是一个错误,但我偶然想出了一个解决方案。

    如果你放一个空的 Package.swift(我的意思是,像这样的):

    // swift-tools-version:5.5
    
    import PackageDescription
    
    let package = Package()
    

    进入项目子文件夹之一,然后即使 SPM 正在检出子文件夹,它也会从 Xcode 导航器中排除,因此从项目可见性中排除。

    我想知道这是否是一个错误,或者它是否记录在某个地方,每一个提示都表示赞赏。

    适用于本地和远程依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-24
      • 2021-11-22
      • 2019-01-25
      • 1970-01-01
      • 2011-04-07
      • 2015-12-16
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多