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