Files
doc.rustdesk.com/content/dev/build/osx/_index.zh-cn.md
rustdesk 56cfd26e35 seo/geo
2026-03-20 18:42:55 +08:00

6.1 KiB
Raw Blame History

title, weight, description, keywords
title weight description keywords
macOS 21 RustDesk 的macOS文档提供安装、配置、部署和故障排查指南。
build rustdesk macos
rustdesk mac build
rustdesk sciter mac
rustdesk flutter macos build
rustdesk vcpkg macos

有多种方式可以完成这项工作,本指南假设您已经安装了 XcodeGitHomebrew

应该选择哪条 macOS 构建路径?

需求 最佳路径
构建传统桌面 UI Sciter
构建较新的桌面栈 Flutter
准备共享原生依赖 Homebrew + vcpkg + Rust

macOS 构建检查清单

  • 确认已经安装 XcodeGitHomebrew
  • 通过 Homebrew 安装所需工具。
  • 克隆并初始化 vcpkg,然后导出 VCPKG_ROOT
  • 通过 rustup 安装并配置 Rust。
  • 克隆 RustDesk 源码仓库及其子模块。
  • 在开始构建前补齐 Sciter 或 Flutter 所需组件。

最大的挑战可能是找到所有能够协同工作的工具版本,特别是因为工具链的某些部分(如 Xcode 和 LLVM由您的 macOS 版本决定。本指南中使用的版本可能不是您应该使用的版本。确定使用什么版本的起点是查看您想要构建的 RustDesk 版本的 GitHub 构建工作流。在页面左上角选择要查看文件的标签。但这可能不一定有效,因为 GitHub 运行器附带的 macOS 工具可能与您本地系统上的版本不同。

Export

export 用于设置各种环境变量。当您运行 export 时,该变量仅为当前终端会话设置,因此必须在每个新的终端窗口中重复这些设置,无论是现在还是将来想要构建 RustDesk 时。通常,最好将所有 export 添加到为每个打开的终端自动执行的脚本中,例如 ~/.bash_profile。这里列出的完整 export 命令可以简单地追加到文件中,但也必须在当前终端中运行,因为文件在打开终端之前不会被读取。

从 Homebrew 安装我们要使用的工具

brew install python3 create-dmg nasm cmake gcc wget ninja pkg-config wget rustup

某些安装可能会失败,因为我们的系统上不存在某些目标文件夹。在这种情况下,创建文件夹,设置所有者和权限,然后再次运行 brew 命令。例如,如果 /usr/local/include 不存在:

sudo mkdir /usr/local/include
sudo chown <username>:admin /usr/local/include
sudo chmod 775 /usr/local/include

安装 vcpkg

Vcpkg 用于管理 RustDesk 使用的 C/C++ 依赖项。决定您希望安装的位置,并从您希望 vcpkg 文件夹所在的文件夹运行以下命令。在此示例中,使用 /Users/<username>/repos/ 作为位置,使用标签 2023.04.15 作为版本。

git clone https://github.com/microsoft/vcpkg
cd vcpkg
git checkout 2023.04.15
./bootstrap-vcpkg.sh -disableMetrics
./vcpkg install libvpx libyuv opus aom
export VCPKG_ROOT=~/repos/vcpkg

安装和配置 Rust

我们使用 rustup 来管理 Rust它已经通过上面的 Homebrew 安装了。但是,它仍然需要配置。按照说明操作,并确保 rustuprustc 都在 PATH 中。在这个示例中我们使用 Rust 版本 1.75.0,但您可能需要使用不同的版本。您可以使用 rustup 安装和管理多个版本的 Rust。

rustup-init
rustup default 1.75.0
rustup component add rustfmt

要查看已安装和默认的 Rust 工具链概述,请运行 rustup show

下载 RustDesk 源文件

决定您希望 RustDesk 源文件的位置,并从您希望 rustdesk 文件夹所在的文件夹运行以下命令。在此示例中,使用 /Users/<username>/repos/ 作为位置。

git clone --recurse-submodules https://github.com/rustdesk/rustdesk
cd rustdesk/libs/portable/
python3 -m pip install --upgrade pip
pip3 install -r requirements.txt

如果 python3pip 未知,请使用类似以下的方式将它们添加到 PATH(使用您的实际文件夹名称):

export PATH=~/Library/Python/3.9/bin:$PATH

完成后,再次运行失败的命令。记住也要编辑 ~/.bash_profile

安装用户界面组件

RustDesk 可以使用 SciterFlutter 构建。这两者都需要额外的组件,因此请按照相关版本或两者的步骤进行操作。

Sciter

rustdesk 文件夹运行:

wget https://github.com/c-smile/sciter-sdk/raw/master/bin.osx/libsciter.dylib

Flutter

FVM 让您管理使用的 Flutter 版本,可能是能够轻松尝试不同 Flutter 版本的最简单方法。

brew tap leoafarias/fvm
brew install fvm cocoapods

例如,安装并使用 Flutter 3.16.9

fvm global 3.16.9

FVM 旨在使用更复杂的设置,为不同项目提供不同的 Flutter 版本,但这超出了本指南的范围。相反,只需手动将 FVM 提供的默认 Flutter 位置添加到您的 PATH,这意味着您必须使用 fvm global 来切换 Flutter 版本:

export PATH=$HOME/fvm/default/bin:$PATH

完成后,您应该禁用遥测并检查是否一切正常:

flutter --disable-analytics
dart --disable-analytics
flutter doctor -v

一些检查失败并不重要,它们通常会失败,重要的是您打算使用的环境(即 Xcode)的检查是正常的。如果报告了问题,请在继续之前解决它们。

Flutter 启动并运行后,就该安装将 Rust 和 Flutter 绑定在一起的"桥接"了。这是另一个需要与其他所有东西协同工作的版本,在这个示例中我们使用 1.80.1

cargo install flutter_rust_bridge_codegen --version "1.80.1" --features "uuid"

构建

rustdesk 文件夹构建。构建 Sciter 版本:

python3 ./build.py

构建 Flutter 版本:

flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h
python3 ./build.py --flutter

如果一切顺利,您现在应该在 rustdesk 文件夹中有一个准备安装的 dmg 文件。