macOS
Ci sono diversi modi per farlo, questa guida presuppone che Xcode
, Git
e Homebrew
siano già installati.
La sfida più grande è probabilmente trovare le versioni di tutti gli strumenti che funzionano insieme, specialmente dato che parti della toolchain come Xcode e LLVM sono dettate dalla tua versione di macOS. Le versioni utilizzate in questa guida probabilmente non sono quelle che dovresti utilizzare. Come punto di partenza per capire quali versioni utilizzare, guarda il workflow di build di GitHub per la versione di RustDesk che vuoi compilare. Scegli il tag per vedere il file nell’angolo in alto a sinistra della pagina. Ma questo potrebbe non funzionare necessariamente perché gli strumenti macOS forniti con il runner di GitHub potrebbero non essere le stesse versioni di quelle sul tuo sistema locale.
Export
export
viene utilizzato per impostare varie variabili ambientali. Quando esegui export
, quella variabile viene impostata solo per la sessione terminale corrente, e quindi deve essere ripetuta per ogni nuova finestra terminale che vuoi utilizzare per compilare RustDesk, ora o in futuro. Generalmente, è preferibile aggiungere tutti gli export
a uno script che viene eseguito automaticamente per ogni terminale che viene aperto, ad esempio ~/.bash_profile
. I comandi export
completi elencati qui possono essere semplicemente aggiunti al file, ma devono anche essere eseguiti nel terminale corrente perché il file non viene letto fino a quando non viene aperto un nuovo terminale.
Installa gli strumenti che utilizzeremo da Homebrew
brew install python3 create-dmg nasm cmake gcc wget ninja pkg-config wget rustup
Alcune delle installazioni potrebbero fallire perché alcune delle cartelle di destinazione non esistono sul nostro sistema. In quel caso, crea la cartella, imposta proprietario e permessi ed esegui nuovamente il comando brew
. Esempio se /usr/local/include
non esiste:
sudo mkdir /usr/local/include
sudo chown <username>:admin /usr/local/include
sudo chmod 775 /usr/local/include
Installa vcpkg
Vcpkg viene utilizzato per gestire le dipendenze C/C++ utilizzate da RustDesk. Decidi dove vuoi l’installazione ed esegui quanto segue dalla cartella in cui vuoi che risieda la cartella vcpkg
. In questo esempio /Users/<username>/repos/
viene utilizzato come posizione, e il tag 2023.04.15
viene utilizzato come versione.
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
Installa e configura Rust
Utilizziamo rustup
per gestire Rust, che è già stato installato sopra utilizzando Homebrew. Ma deve ancora essere configurato. Segui le istruzioni e assicurati che sia rustup
che rustc
siano nel PATH
. In questo esempio utilizziamo la versione di Rust 1.75.0
, ma potresti dover utilizzare una versione diversa. Puoi installare e gestire più versioni di Rust con rustup
.
rustup-init
rustup default 1.75.0
rustup component add rustfmt
Per una panoramica delle toolchain Rust installate e predefinite, esegui rustup show
.
Scarica i file sorgente di RustDesk
Decidi dove vuoi i file sorgente di RustDesk ed esegui quanto segue dalla cartella in cui vuoi che risieda la cartella rustdesk
. In questo esempio /Users/<username>/repos/
viene utilizzato come posizione.
git clone --recurse-submodules https://github.com/rustdesk/rustdesk
cd rustdesk/libs/portable/
python3 -m pip install --upgrade pip
pip3 install -r requirements.txt
Se python3
o pip
sono sconosciuti, aggiungili al PATH
con qualcosa come (usa i nomi delle tue cartelle effettive):
export PATH=~/Library/Python/3.9/bin:$PATH
Una volta fatto, esegui nuovamente i comandi falliti. Ricorda anche di modificare ~/.bash_profile
.
Installa i componenti dell’interfaccia utente
RustDesk può essere compilato utilizzando sia Sciter che Flutter. Entrambi necessitano di componenti aggiuntivi, quindi segui i passaggi per la versione pertinente, o entrambe.
Sciter
Dalla cartella rustdesk
, esegui:
wget https://github.com/c-smile/sciter-sdk/raw/master/bin.osx/libsciter.dylib
Flutter
FVM ti consente di gestire quale versione di Flutter viene utilizzata, ed è probabilmente il modo più semplice per poter facilmente provare diverse versioni di Flutter.
brew tap leoafarias/fvm
brew install fvm cocoapods
Installa e usa, ad esempio Flutter 3.16.9
, con:
fvm global 3.16.9
FVM è pensato per utilizzare una configurazione più complessa dove può fornire diverse versioni di Flutter per progetti diversi, ma questo va oltre lo scopo di questa guida. Invece, aggiungi semplicemente la posizione del Flutter predefinito fornito da FVM al tuo PATH
manualmente, il che significa che devi utilizzare fvm global
per cambiare versione di Flutter:
export PATH=$HOME/fvm/default/bin:$PATH
Una volta fatto, dovresti disabilitare la telemetria e controllare se tutto è OK:
flutter --disable-analytics
dart --disable-analytics
flutter doctor -v
Non importa se alcuni dei controlli falliscono, di solito lo fanno, quello che è importante è che il controllo per l’ambiente che intendi utilizzare sia OK, ovvero Xcode
. Se vengono segnalati problemi, affrontali prima di andare avanti.
Una volta che Flutter è attivo e funzionante, è il momento di installare il “bridge” che lega insieme Rust e Flutter. Ecco un’altra delle versioni che devono funzionare insieme a tutto il resto, in questo esempio utilizziamo 1.80.1
:
cargo install flutter_rust_bridge_codegen --version "1.80.1" --features "uuid"
Build
Compila dalla cartella rustdesk
. Compila la versione Sciter con:
python3 ./build.py
Compila la versione Flutter con:
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
Se tutto va bene, ora dovresti avere un file dmg
pronto per l’installazione nella tua cartella rustdesk
.