在 Xcode 11 中添加对本地 swift 包的依赖
Add dependency on a local swift package in Xcode 11
我正在尝试在我的 Xcode 项目中添加对本地 swift 包的依赖。 (我不想使用文件 url file://me/dev/app/package
添加依赖项,因为这不能共享到其他环境)
我尝试将包拖放到目标中。这会在项目中创建对包的引用,我可以在 "Link Binary With Libraries" 构建阶段添加该包,但仍然找不到该库。
No such module 'Analytics'
我原来的配置
拖放后
这是我的包配置:
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "Analytics",
products: [
.library(name: "Analytics", targets: ["Analytics"]),
],
dependencies: [
.package(path: "../SomeOtherPackage"),
],
targets: [
.target(name: "Analytics", dependencies: [
"SomeOtherPackage",
]),
]
)
我还在目标链接二进制文件中包含了包 and/or 捆绑资源 and/or 编译源无济于事:
我看了this long discussion,好像没有定论。
这是我正在尝试的一个简单示例:https://github.com/gsabran/SPM_Xcode_test
这就是我所做的,它确实有效...... Xcode 11.2
我。准备包裹
文件 > 新建 > Swift 包 > Select 清空文件夹(或新建)> 输入库名称 (MyLibrary)
在项目中找到 MyLibrary.swift 并制作 public 结构和变量,因此有一些导出可以在应用程序中使用(我制作了静态常量并固定了 UT)
构建 > 确定 > 关闭项目
二.准备项目
文件 > 新建 > 项目 > iOS > 单视图应用程序 > 输入名称 (MyApp) > 下一步 > Select 与上面相同的文件夹(默认情况下)>创建
构建 > 确定
从 Finder 中将 MyLibrary 文件夹拖到 Xcode Project Navigator
中项目名称的正下方
构建 > 确定
单击 Project Navigator 中的 MyApp 项目图标 > Select MyApp 应用程序目标 > Frameworks,Libraries,...部分单击 + > 在最顶部的 Workspace 部分 select MyLibrary > Add
清理 > 构建 > 确定
打开ContentView.swift > 输入import MyLibrary
(自动补全已经看到了)
将“Hello, World”替换为“(MyLibrary.text)”
构建 & 运行 > 确定
就是这样。
验证使用的相对路径在 TextEdit 中打开 project.pbxproj,这里是屏幕截图
更新:
注意 1 - 我考虑过 Clean 之后包解析有一些延迟,所以在一段时间内,在这里 1-2 分钟,构建完全失败并报告错误,但在延迟之后它是可见索引重新启动,后续构建成功。
Note2 - 在图中添加第二个依赖包(MyApp > MyLibrary > AnotherLibrary)是一样的。
我正在尝试在我的 Xcode 项目中添加对本地 swift 包的依赖。 (我不想使用文件 url file://me/dev/app/package
添加依赖项,因为这不能共享到其他环境)
我尝试将包拖放到目标中。这会在项目中创建对包的引用,我可以在 "Link Binary With Libraries" 构建阶段添加该包,但仍然找不到该库。
No such module 'Analytics'
我原来的配置
拖放后
这是我的包配置:
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "Analytics",
products: [
.library(name: "Analytics", targets: ["Analytics"]),
],
dependencies: [
.package(path: "../SomeOtherPackage"),
],
targets: [
.target(name: "Analytics", dependencies: [
"SomeOtherPackage",
]),
]
)
我还在目标链接二进制文件中包含了包 and/or 捆绑资源 and/or 编译源无济于事:
我看了this long discussion,好像没有定论。
这是我正在尝试的一个简单示例:https://github.com/gsabran/SPM_Xcode_test
这就是我所做的,它确实有效...... Xcode 11.2
我。准备包裹
文件 > 新建 > Swift 包 > Select 清空文件夹(或新建)> 输入库名称 (MyLibrary)
在项目中找到 MyLibrary.swift 并制作 public 结构和变量,因此有一些导出可以在应用程序中使用(我制作了静态常量并固定了 UT)
构建 > 确定 > 关闭项目
二.准备项目
文件 > 新建 > 项目 > iOS > 单视图应用程序 > 输入名称 (MyApp) > 下一步 > Select 与上面相同的文件夹(默认情况下)>创建
构建 > 确定
从 Finder 中将 MyLibrary 文件夹拖到 Xcode Project Navigator
中项目名称的正下方构建 > 确定
单击 Project Navigator 中的 MyApp 项目图标 > Select MyApp 应用程序目标 > Frameworks,Libraries,...部分单击 + > 在最顶部的 Workspace 部分 select MyLibrary > Add
清理 > 构建 > 确定
打开ContentView.swift > 输入
import MyLibrary
(自动补全已经看到了) 将“Hello, World”替换为“(MyLibrary.text)”构建 & 运行 > 确定
就是这样。
验证使用的相对路径在 TextEdit 中打开 project.pbxproj,这里是屏幕截图
更新:
注意 1 - 我考虑过 Clean 之后包解析有一些延迟,所以在一段时间内,在这里 1-2 分钟,构建完全失败并报告错误,但在延迟之后它是可见索引重新启动,后续构建成功。
Note2 - 在图中添加第二个依赖包(MyApp > MyLibrary > AnotherLibrary)是一样的。