GPUI Kit 安装指南:在 macOS、Windows 与 Linux 上搭建 Rust 桌面应用开发环境

GPUI Kit 安装指南:在 macOS、Windows 与 Linux 上搭建 Rust 桌面应用开发环境 GPUI Kit 安装指南在 macOS、Windows 与 Linux 上搭建 Rust 桌面应用开发环境【免费下载链接】gpui-kitRust GUI components for building fantastic cross-platform desktop application by using GPUI.项目地址: https://gitcode.com/GitHub_Trending/gp/gpui-kitGPUI Kit 是一个基于 GPUI 的 Rust 跨平台桌面 UI 组件库官方为gpui-component提供了一站式的环境准备与安装方案。本文将以 安装文档 为主线结合仓库内的 安装脚本、依赖清单 与 kit 层的源码实现完整讲解系统依赖准备、gpui-kitcrate 的引入方式以及如何通过 Cargo profile 显著加快 Debug 构建下的应用渲染速度。读完本文你将能够从零开始在三个主流桌面平台上跑起第一个 GPUI Kit 窗口。系统要求GPUI Kit 目前支持在 macOS、Windows 和 Linux 三大桌面平台进行开发各平台的最低要求如下macOSmacOS 15 或更高版本Xcode Command Line ToolsXcode Command Line Tools 是编译原生代码的必备工具可通过xcode-select --install安装。macOS 上的 GPUI 使用 Metal 作为渲染后端因此对系统版本有明确的最低要求。WindowsWindows 10 或更高版本Windows 平台的构建依赖MSVC 工具链、CMake 等可以通过仓库提供的脚本一键安装见下文「Windows 依赖安装」小节。LinuxLinux 平台需要安装与图形栈、字体、Vulkan 相关的系统库。仓库提供了./script/bootstrap脚本自动完成安装具体清单见下文「Linux 依赖安装」小节。Windows 依赖安装仓库在 script/install-window.ps1 中提供了 PowerShell 脚本用于安装 Windows 构建所需的工具链与依赖。在 PowerShell 中执行.\script\install-window.ps1从脚本源码可以看到它依次完成以下工作Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression winget install Microsoft.VisualStudio.2022.Community --silent --override --wait --quiet --add ProductLang En-us --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended scoop bucket add extras scoop install cmake首先将当前用户的执行策略设置为RemoteSigned以便运行下载的安装脚本通过 scoop 安装包管理器使用winget静默安装 Visual Studio 2022 Community并显式附加NativeDesktop 工作负载包含 MSVC C 工具链、Windows SDK 等是编译 GPUI 及原生依赖所必需的同时加入--includeRecommended安装推荐组件最后通过 scoop 安装CMake用于构建部分依赖的原生 C/C 部分。建议以管理员身份运行 PowerShell 后执行该脚本脚本执行完成后重新打开终端再运行cargo build验证环境。Linux 依赖安装在 Linux 上运行仓库根目录下的引导脚本即可./script/bootstrap该脚本会判断当前系统类型在 Linux 上转调 script/install-linux.sh在 macOS 上则输出提示macOS 依赖已由 Xcode Command Line Tools 覆盖。以 Ubuntu 24.04 为基准测试环境Linux 脚本实际安装的依赖为sudo apt update sudo apt install -y \ gcc g clang libfontconfig-dev libwayland-dev \ libwebkit2gtk-4.1-dev libxkbcommon-x11-dev libx11-xcb-dev \ libssl-dev libzstd-dev \ vulkan-validationlayers libvulkan1这些包按用途可分为几类C/C 编译器gcc、g、clang用于编译 Rust 依赖的原生代码字体与图形栈libfontconfig-dev字体配置、libwayland-devWayland 协议库WebKitlibwebkit2gtk-4.1-dev是 GPUI 中 WebView 相关能力如 webview crate在 Linux 上的运行时依赖X11 与输入libxkbcommon-x11-dev、libx11-xcb-dev用于 X11 平台下的键盘映射与窗口系统互操作加密与压缩libssl-dev、libzstd-dev对应 Rust 生态中 TLS 与 zstd 压缩的原生后端Vulkanvulkan-validationlayers、libvulkan1GPUI 在 Linux 上使用 Vulkan 作为渲染后端。如果你的发行版不是 Debian/Ubuntu 系即没有apt需要参照上述清单安装等价包。Wayland 与 X11 依赖同时安装可以覆盖两种常见的 Linux 桌面会话。Rust 与 CargoGPUI Kit 使用 Rust 构建因此系统需要预先安装 Rust 工具链Rust 1.90 或更高版本Cargo通常随 Rust 一并安装推荐使用 rustup还需要安装 nightly 工具链与wasm32-unknown-unknown目标[toolchain] channel nightly components [rustfmt, clippy] targets [wasm32-unknown-unknown]在 Cargo.toml 中引入 gpui-kit在应用或 workspace的Cargo.toml的[dependencies]中加入一行即可[dependencies] gpui-kit 0.6关键设计是gpui-kit会替你引入配套的 GPUI crate 集合应用无需再单独声明 GPUI。从 crates/kit/Cargo.toml 的依赖声明可以看到kit 层直接依赖gpuigpui-pre、gpui_platform、gpui-base并可选地携带gpui-component与gpui-kit-assets。各层模块的命名空间根据 crates/kit/src/lib.rs 与 crates/kit/README.md 的说明use gpui_kit::*;就是 GPUI 本身各层按名访问PathCrateFeaturegpui_kit::*gpuialwaysgpui_kit::platformgpui_platformalwaysgpui_kit::basegpui-basealwaysgpui_kit::componentgpui-componentcomponent默认开启gpui_kit::assetsgpui-kit-assetsassets默认开启gpui_kit::component带样式的组件库即gpui-component并会顺带初始化gpui-basegpui_kit::baseGPUI Base 基础层gpui_kit::assets默认图标资源集gpui_kit::platform平台能力层窗口、事件循环等。最小可运行示例gpui_kit::application()负责打开平台gpui_kit::init()负责初始化所有已启用的层在源码中启用componentfeature 时委托给gpui_component::init否则退化为gpui_base::init且必须在任何其他使用之前调用一次。一个带按钮的最小示例use gpui_kit::component::button::*; use gpui_kit::component::Root; use gpui_kit::*; struct Hello; impl Render for Hello { fn render(mut self, _: mut Window, _: mut ContextSelf) - impl IntoElement { div().child(Button::new(ok).primary().label(Lets Go!)) } } fn main() { gpui_kit::application().run(|cx| { gpui_kit::init(cx); cx.spawn(async move |cx| { cx.open_window(WindowOptions::default(), |window, cx| { let view cx.new(|_| Hello); cx.new(|cx| Root::new(view, window, cx)) }) .expect(failed to open window); }) .detach(); }); }仓库自带的 story 应用 展示了同样的启动流程gpui_kit::application().with_assets(Assets)挂载默认资源随后在run回调中init(cx)并打开窗口。可选 Featuregpui-kit的默认 feature 为component与assets见 crates/kit/Cargo.toml。gpui-component提供的inspector、decimal、tree-sitter、tree-sitter-languages以及各tree-sitter-language特性都可以在gpui-kit上以同名开启。用于 UI 集成测试的test-support启用 GPUI 的测试框架、#[gpui_kit::test]宏与原生平台渲染支持通常应放在[dev-dependencies]中而非正式依赖。加快开发构建仅对依赖开启优化Debug 构建下GPUI、组件库和文字排版相关的 crate 默认不做优化导致cargo run出来的应用渲染明显比 release 慢。解决方案是只对这些依赖开启优化你自己的代码仍然保持快速、可调试的 debug 构建。Cargo 的 Profile 只在应用或 workspace根目录的Cargo.toml中生效。将以下片段加入根Cargo.toml[profile.dev.package] gpui-pre { opt-level 3 } gpui-component { opt-level 3 } gpui-kit { opt-level 3 } gpui-kit-assets { opt-level 3 } gpui-pre-macros { opt-level 3 } gpui-pre-platform { opt-level 3 } rustybuzz { opt-level 3 } taffy { opt-level 3 } ttf-parser { opt-level 3 }各条目的作用说明gpui-pre、gpui-pre-platform、gpui-pre-macrosGPUI 运行时、平台层与宏层是渲染热路径的核心gpui-component、gpui-kit、gpui-kit-assets组件库、kit 聚合层与资源 craterustybuzzOpenType 文本整形引擎taffy布局引擎ttf-parserTrueType 字体解析器。其中文字排版相关的rustybuzz、taffy、ttf-parser与 GPU 无关但计算密集opt-level 3能显著改善文本渲染性能。仓库根目录的 Cargo.toml 中实际生效的 profile 还包含resvg、smol、tree-sitter、ropey、lsp-types、markdown等更多条目并设置了codegen-units 16、debug limited、split-debuginfo unpacked可作为优化调试体验的参考。该配置只影响列出的依赖 crate不会拖慢你自己的代码编译也不会影响cargo build --release的产物。验证安装完成以上步骤后可以通过以下方式验证环境是否就绪# 1. 确认 Rust 版本 rustc --version # 应不低于 1.90 # 2. 新建项目并引入 gpui-kit cargo new my_app cd my_app # 在 Cargo.toml 的 [dependencies] 中添加 gpui-kit 0.6 # 3. 编写一个最小窗口程序参考上文示例 # 4. 运行 cargo run若构建过程中遇到缺库报错回到对应平台的依赖安装脚本核对是否全部安装。仓库中的 examples/hello_world 等示例也可作为现成的验证工程。至此你已经完成了 GPUI Kit 的全平台环境搭建可以基于gpui_kit::component开始构建跨平台桌面应用了。更完整的组件用法可继续阅读 基础组件文档 与 快速上手。【免费下载链接】gpui-kitRust GUI components for building fantastic cross-platform desktop application by using GPUI.项目地址: https://gitcode.com/GitHub_Trending/gp/gpui-kit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考