gpt4 book ai didi

Swift Package - 分发带有包的独立可执行文件

转载 作者:行者123 更新时间:2023-12-03 09:19:49 28 4
gpt4 key购买 nike

我正在编写一个 Swift 脚本作为一个独立的 Swift 包。这个脚本的一部分需要生成一些文件,我有模板。
现在,这些模板不可编译(它们是 HTML 文件);所以为了将它们包含在包中,我将它们包含为 .copy("Templates") .
在调试我的脚本时,我可以很好地访问模板,但是 当我尝试归档产品时,可执行文件无权访问它们 了。
这是我的 Package.swift:

let package = Package(
name: "flucs",
products: [
.executable(name: "Flucs",
targets: ["flucs"])
],
dependencies: [
.package(url: "https://github.com/MrSkwiggs/Netswift", .exact(.init(0, 3, 1))),
],
targets: [
.target(
name: "flucs",
dependencies: ["Netswift"],
path: "Sources",
resources: [
.copy("Templates")
]),

.testTarget(
name: "flucsTests",
dependencies: ["flucs"]),
]
)
我的文件夹结构:
folder structure
如何分发我的脚本以便它也包含其资源?

最佳答案

SPM 将您的资源编译为单独的包,但命令行工具只是一个没有包的可执行文件,您添加到可执行文件的任何资源都会被 Xcode(构建阶段 > 复制包资源)忽略以进行发布(存档)构建。
如果你看看里面 Bundle.module你可以找到:

...
// For command-line tools.
Bundle.main.bundleURL,
...
哪里 Bundle.main.bundleURL是包含命令行可执行文件的目录的有效文件 url,以便它在可执行文件旁边查找您的包。它适用于调试,因为 XCode 只是在您的可执行文件附近编译您的资源包。
使用已编译的 .bundle 获取 Release 可执行文件的最简单方法文件是从命令行构建你的包:
swift build --configuration release
然后你可以在 .build/release 中找到它们。文件夹。

关于Swift Package - 分发带有包的独立可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65018980/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com