
如何構建 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創(chuàng)建終端、寫入 VT 轉(zhuǎn)義序列、把屏幕內(nèi)容格式化為文本倉庫提供了一個現(xiàn)成的示例路徑先在 Ghostty 倉庫根目錄構建出預編譯的 XCFramework再用 example/swift-vt-xcframework 這個 Swift Package 以binaryTarget方式引用它并運行驗證。整個過程只在 macOS 上可行因為構建 XCFramework 依賴xcodebuild。準備條件一臺 macOS 機器PATH 中可用xcodebuild即已安裝 Xcode 命令行工具。build.zig 中明確libghostty-vt 的 xcframework 只在 Apple 平臺產(chǎn)出通用二進制且只有在 macOS 上直接構建不是交叉編譯時才構建因為需要xcodebuild。一個 Ghostty 的 Git checkout即包含build.zig、build.zig.zon和example/目錄的源碼樹。Zig 工具鏈。PACKAGING.md 說明 Ghostty 依賴特定版本的 Zig 才能構建查build.zig中的required_zig常量即可知道當前版本要求的 Zig 版本該版本始終是正式發(fā)布版。在 lib-vt 構建模式下-Demit-xcframework的默認值取決于能否找到xcodebuild見 src/build/Config.zig所以在具備 Xcode 的 macOS 上按 README 給的單條命令即可同時產(chǎn)出庫和 XCFramework無需額外傳參。在倉庫根目錄構建 XCFramework在 Ghostty 倉庫根目錄執(zhí)行zig build -Demit-lib-vt-Demit-lib-vt把構建切換為 libghostty-vt-only 模式按zig build --help中的說明該模式會關閉 xcframework、macOS app 和 docs 的默認配置然后按上文規(guī)則在檢測到xcodebuild時默認開啟 lib-vt 的 xcframework 產(chǎn)出。構建成功后產(chǎn)物位于倉庫根目錄下的zig-out/lib/ghostty-vt.xcframework這是 macOS 通用二進制arm64 x86_64見 src/build/GhosttyLibVt.zig 中initStaticAppleUniversal的說明總是構建 macOS universal 切片檢測到對應 SDK 時還會加入額外平臺切片。先確認該路徑存在再進入下一步否則 Swift 包會因找不到binaryTarget而失敗。Swift 包如何引用 XCFrameworkPackage.swift 的關鍵內(nèi)容是// 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/出發(fā)正好指向倉庫根目錄的構建產(chǎn)物這就是為什么第一步必須從倉庫根目錄構建——產(chǎn)物落點變了這個路徑就解析不到。platforms: [.macOS(.v13)]限定了該 Swift 包最低運行環(huán)境為 macOS 13。這個示例的作用是 README 所描述的最小驗證創(chuàng)建一個終端、向其中寫入 VT 序列、再把屏幕內(nèi)容格式化為純文本。構建并運行 Swift 包cd example/swift-vt-xcframework swift build swift runswift build負責鏈接 XCFramework能編譯通過即說明二進制目標被正確解析。驗證輸出Sources/main.swift 的執(zhí)行流程調(diào)用ghostty_terminal_new(nil, terminal, 80, 24)創(chuàng)建一個 80 列 × 24 行的終端返回值不是GHOSTTY_SUCCESS時直接fatalError(Failed to create terminal)寫入一段帶 VT 轉(zhuǎn)義序列的文本Hello from \u{1b}[1mSwift\u{1b}[0m via xcframework!\r\n創(chuàng)建 formatter選項emit GHOSTTY_FORMATTER_FORMAT_PLAIN、trim true用ghostty_formatter_format_alloc把終端內(nèi)容格式化為純文本打印結果并釋放資源。運行成功時標準輸出以Plain text (N bytes):開頭隨后是格式化后的屏幕文本其中應包含 Hello from Swift via xcframework! 一行加粗的 VT 序列在純文本模式下不產(chǎn)生可見標記。括號里的字節(jié)數(shù)取決于終端內(nèi)容與格式不要把它當成固定預期值。任意一步失敗都會以對應的fatalError消息Failed to create terminal/Failed to create formatter/Failed to format終止可據(jù)此定位是哪一環(huán)出了問題。限制XCFramework 構建受雙重限制宿主和目標都必須是 Darwin且宿主上必須有xcodebuild在 Linux 或 macOS 交叉編譯場景下不會產(chǎn)出這個產(chǎn)物。完整的 Ghostty 構建不支持 iOSsrc/build/Config.zig 中明確只有-Demit-lib-vt模式才允許 iOS 目標所以如果你的目標是 iOS 庫集成libghostty-vt 是文檔中唯一說明支持的路徑。本示例的 Swift 包僅面向 macOS 13 及以上這是Package.swift聲明的平臺下限?!久赓M下載鏈接】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創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考