我使用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
的文件,等等。
如何构建框架需要做什么? 我需要编写整个过程的脚本,不需要手动解决方法。
答案 0 :(得分:0)
从Swift 4.0开始swift package generate-xcodeproj
不会自动为所有目标生成方案,但仍然可以从Xcode访问这些目标。
如果手动创建一个新方案一次是可以接受的,您可以这样做,并将您的框架目标添加为方案构建目标。
否则,可以使用xcodeswift/xcproj等库以编程方式创建新方案,这些库允许您解析新生成的Xcode项目并使用其XCSharedData
类生成新方案。
在创建新的框架方案之后,您可以使用xcodebuild -workspace MyThing.xcworkspace -scheme MyThingFramework clean build
运行构建。
答案 1 :(得分:0)
在一个目标中混合脚本文件和框架代码似乎混淆了SwiftPM。将var arr = ["1-49","50-149","150-250","251-400","401-600",,"601-1049","1050-3000","3001-9999"];
arr.sort( ( a, b ) => (
al = +a.split("-")[1], //last of a, after split by -
bf = +b.split("-")[0], //first of b, after split by -
al-bf ) );
移出源文件夹会清除内容。
Scheme main.swift
创建MyThing-Package
中指定的所有构建产品,包括框架。
如果要将脚本文件放在同一个XCode工作区中(为方便编辑),请将它们放在自己的目标中。您甚至可以创建一个可执行产品(由于可执行文件无法链接到动态框架,因此不会创建任何有用的产品)。