在macOS上构建RustDesk可以通过多种方法实现。本指南假设已经安装了以下工具:Xcode、Git 和 Homebrew,接下来详细介绍如何在macOS上构建RustDesk。
一、确定工具版本
在macOS中,工具链如Xcode和LLVM的版本会影响构建过程。请确保使用与macOS版本兼容的工具版本。建议查看GitHub生成工作流,以获取建议的工具版本。
二、设置环境变量
使用 export 命令设置必要的环境变量。这些变量将影响构建过程,需确保它们在每个新的终端会话中都可用。可以将这些命令添加到~/.bash_profile文件中自动执行。
export PATH=~/Library/Python/3.9/bin:$PATH export VCPKG_ROOT=~/repos/vcpkg
三、安装必要工具
使用Homebrew安装 RustDesk 所需的工具:
brew install python3 create-dmg nasm cmake ggc wget ninja pkg-config wget rustup
如果某些安装失败,可能需要手动创建缺失的文件夹并设置权限。
sudo mkdir /usr/local/include sudo chown <username>:admin /usr/local/include sudo chmod 775 /usr/local/include
四、安装和配vcpkg
vcpkg是管理RustDesk 的 C/C++依赖项的工具。在选择的文件夹中执行以下命令:
git clone https://github.com/microsoft/vcpkg cd vcpkg git checkout 2023.04.15 # 替换为需要的版本 ./bootstrap-vcpkg.sh -disableMetrics ./vcpkg install libvpx libyuv opus aom
五、安装和配置Rust
使用 rustup 工具来安装和管理 Rust 编程语言:
rustup-init rustup default 1.75.0 # 替换为需要的 Rust 版本 rustup component add rustfmt
运行rustup show查看已安装和默认的 Rust 工具链。
六、下载RustDesk源文件
从GitHub克隆RustDesk源代码并安装必要的Python包:
git clone https://github.com/rustdesk/rustdesk cd rustdesk/libs/portable/ python3 -m pip install --upgrade pip pip3 install -r requirements.txt
七、安装用户界面组件
RustDesk可以使用Sciter或Flutter构建。根据选择的版本,执行以下步骤:
1、使用Sciter
wget https://github.com/c-smile/sciter-sdk/raw/master/bin.osx/libsciter.dylib
2、使用Flutter
使用 FVM 管理 Flutter 版本:
brew tap leoafarias/fvm brew install fvm cocoapods fvm global 3.16.9 # 替换为需要的 Flutter 版本
八、安装用户界面组件
根据选择的界面组件,执行以下命令构建 RustDesk:
1、使用Sciter
wget https://github.com/c-smile/sciter-sdk/raw/master/bin.osx/libsciter.dylib
2、使用Flutter
brew tap leoafarias/fvm brew install fvm cocoapods
安装和使用:
fvm global 3.16.9
FVM旨在使用更复杂的设置,它可以为不同的项目提供不同的Flutter版本,只需手动将 FVM 提供的默认Flutter位置添加到您的位置,必须使用PAT Hfvm global来切换Flutter版本:
export PATH=$HOME/fvm/default/bin:$PATH
完成后,检查是否一切正常:
flutter --disable-analytics dart --disable-analytics flutter doctor -v
九、在macOS上构建RustDesk
从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