ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何构建 libghostty-vt 的 XCFramework 并在 Swift 包中使用

如何构建 libghostty-vt 的 XCFramework 并在 Swift 包中使用 如何构建 libghostty-vt 的 XCFramework 并在 Swift 包中使用【免费下载链接】ghostty Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.项目地址: https://gitcode.com/GitHub_Trending/gh/ghostty如果你的项目需要在 Swift 代码中嵌入 Ghostty 的终端核心库 libghostty-vt创建终端、写入 VT 转义序列、把屏幕内容格式化为文本仓库提供了一个现成的示例路径先在 Ghostty 仓库根目录构建出预编译的 XCFramework再用 example/swift-vt-xcframework 这个 Swift Package 以binaryTarget方式引用它并运行验证。整个过程只在 macOS 上可行因为构建 XCFramework 依赖xcodebuild。准备条件一台 macOS 机器PATH 中可用xcodebuild即已安装 Xcode 命令行工具。build.zig 中明确libghostty-vt 的 xcframework 只在 Apple 平台产出通用二进制且只有在 macOS 上直接构建不是交叉编译时才构建因为需要xcodebuild。一个 Ghostty 的 Git checkout即包含build.zig、build.zig.zon和example/目录的源码树。Zig 工具链。PACKAGING.md 说明 Ghostty 依赖特定版本的 Zig 才能构建查build.zig中的required_zig常量即可知道当前版本要求的 Zig 版本该版本始终是正式发布版。在 lib-vt 构建模式下-Demit-xcframework的默认值取决于能否找到xcodebuild见 src/build/Config.zig所以在具备 Xcode 的 macOS 上按 README 给的单条命令即可同时产出库和 XCFramework无需额外传参。在仓库根目录构建 XCFramework在 Ghostty 仓库根目录执行zig build -Demit-lib-vt-Demit-lib-vt把构建切换为 libghostty-vt-only 模式按zig build --help中的说明该模式会关闭 xcframework、macOS app 和 docs 的默认配置然后按上文规则在检测到xcodebuild时默认开启 lib-vt 的 xcframework 产出。构建成功后产物位于仓库根目录下的zig-out/lib/ghostty-vt.xcframework这是 macOS 通用二进制arm64 x86_64见 src/build/GhosttyLibVt.zig 中initStaticAppleUniversal的说明总是构建 macOS universal 切片检测到对应 SDK 时还会加入额外平台切片。先确认该路径存在再进入下一步否则 Swift 包会因找不到binaryTarget而失败。Swift 包如何引用 XCFrameworkPackage.swift 的关键内容是// swift-tools-version: 5.9 let package Package( name: swift-vt-xcframework, platforms: [.macOS(.v13)], targets: [ .executableTarget( name: swift-vt-xcframework, dependencies: [GhosttyVt], path: Sources ), .binaryTarget( name: GhosttyVt, path: ../../zig-out/lib/ghostty-vt.xcframework ), ] )两个要点binaryTarget的相对路径../../zig-out/lib/ghostty-vt.xcframework从example/swift-vt-xcframework/出发正好指向仓库根目录的构建产物这就是为什么第一步必须从仓库根目录构建——产物落点变了这个路径就解析不到。platforms: [.macOS(.v13)]限定了该 Swift 包最低运行环境为 macOS 13。这个示例的作用是 README 所描述的最小验证创建一个终端、向其中写入 VT 序列、再把屏幕内容格式化为纯文本。构建并运行 Swift 包cd example/swift-vt-xcframework swift build swift runswift build负责链接 XCFramework能编译通过即说明二进制目标被正确解析。验证输出Sources/main.swift 的执行流程调用ghostty_terminal_new(nil, terminal, 80, 24)创建一个 80 列 × 24 行的终端返回值不是GHOSTTY_SUCCESS时直接fatalError(Failed to create terminal)写入一段带 VT 转义序列的文本Hello from \u{1b}[1mSwift\u{1b}[0m via xcframework!\r\n创建 formatter选项emit GHOSTTY_FORMATTER_FORMAT_PLAIN、trim true用ghostty_formatter_format_alloc把终端内容格式化为纯文本打印结果并释放资源。运行成功时标准输出以Plain text (N bytes):开头随后是格式化后的屏幕文本其中应包含 Hello from Swift via xcframework! 一行加粗的 VT 序列在纯文本模式下不产生可见标记。括号里的字节数取决于终端内容与格式不要把它当成固定预期值。任意一步失败都会以对应的fatalError消息Failed to create terminal/Failed to create formatter/Failed to format终止可据此定位是哪一环出了问题。限制XCFramework 构建受双重限制宿主和目标都必须是 Darwin且宿主上必须有xcodebuild在 Linux 或 macOS 交叉编译场景下不会产出这个产物。完整的 Ghostty 构建不支持 iOSsrc/build/Config.zig 中明确只有-Demit-lib-vt模式才允许 iOS 目标所以如果你的目标是 iOS 库集成libghostty-vt 是文档中唯一说明支持的路径。本示例的 Swift 包仅面向 macOS 13 及以上这是Package.swift声明的平台下限。【免费下载链接】ghostty Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.项目地址: https://gitcode.com/GitHub_Trending/gh/ghostty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表