1

我使用 SwiftPM 为框架设置了 XCode 项目;基于

// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "MyThing",
    products: [
        .library(
            name: "MyThing",
            targets: ["MyThing"]),
    ],
    dependencies: [
    ],
    targets: [
        .target(
            name: "MyThing",
            dependencies: [])
)

我跑了swift package generate-xcodeproj,然后pod install(基于内容无关紧要的 Podfile)。我得到MyThing.xcworkspace.

现在我想通了

xcodebuild -workspace MyThing.xcworkspace -scheme MyThing clean build

应该创建.framework-- 但它没有,只出现一个二进制文件。我怀疑这里有些自动化,因为源文件夹包含一个名为 的文件main.swift,等等。

我必须做什么才能构建框架?
我需要编写整个过程的脚本,以避免手动解决方法。

4

2 回答 2

0

在一个目标中混合脚本文件和框架代码似乎会使 SwiftPM 感到困惑。移出main.swift源文件夹可以清除所有内容。

SchemeMyThing-Package创建 中指定的所有构建产品Package.swift,包括框架。

如果您想将脚本文件放在同一个 XCode 工作区中(为了方便编辑),请将它们放在自己的目标中。您甚至可以创建一个可执行产品(它不会创建任何有用的东西,因为可执行文件无法链接到动态框架)。

于 2018-02-22T15:11:11.263 回答
0

从 Swift 4.0 开始swift package generate-xcodeproj,不会自动为所有目标生成方案,但仍然可以从 Xcode 访问这些目标。

如果可以接受一次手动创建新方案,您可以这样做并将您的框架目标添加为方案构建目标。

否则,可以使用诸如xcodeswift/xcproj 之类的库以编程方式创建新方案,这些库允许您解析新生成的 Xcode 项目并使用其XCSharedData类生成新方案。

创建新的框架方案后,您可以使用xcodebuild -workspace MyThing.xcworkspace -scheme MyThingFramework clean build.

于 2018-02-22T14:34:14.473 回答