环境:
win10,
Visual Studio Community 2019 - 16.11.4
git bash 科学上网 git 代理
源码 : RustDesk 1.2.3-2
一. R环境
使用 rustc <= 1.77, 1.78 引入 ABI 更改,(参考: overflow when run cargo · Issue #8263 · rustdesk/rustdesk (github.com))我是运行时,报错搜索 INFO librustdesk::core_main] main start args:[] 找到的,但其实不是同一个问题(后面解释),这里好像最新版本 1.79的rustc也是OK的, 下文用的是降到1.76版的,成功运行。
下载 Rustup-init.exe 官网: Install Rust - Rust Programming Language (rust-lang.org)
# 查看版本
rustc --version
cargo --version
# 切换版本:
rustup install 1.76
rustup default 1.76-x86_64-pc-windows-msvc
# 查看默认版本
rustup toolchain list
cargo版本自动匹配, 所以更改后 cargo run会重新update, 所以最好先设好rustc 的默认版本
参考:rust切换老版本及卸载指定版本_rustup toolchain 历史版本-CSDN博客
二、MSVC环境
由于我的命令都时在 git-bash 中执行的, 所以需要设置 cl 编译环境, 在VS的 Native Tool 命令终端应该能识别该环境,不过我没在那里进行,具体不了解。
设置cl环境参考: bin Include Lib, 测试编译一个hello成功;
VS 2019手动搭建C/C++编译链接环境_vs2019编译器在哪个文件夹-CSDN博客
三、安装 vcpkg, llvm , 下载 RustDesk 源码 (80% 开源)
vcpkg install 是最难的部分, 主要下载 相关工具,cmake 等, 然后找到系统中的 cl.exe 工具链, 过程中下载很多包,所以保证科学上网正常。
我是在 git bash 下运行的
# 安装 vcpkg
git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
# 配置 VCPKG_ROOT 环境变量。vcpkg 编译后,会在源代码目录生成 vcpkg.exe 文件,指向那个目录就可以了
VCPKG_ROOT = E:\work\gitwork\vcpkg
# 安装编译相关依赖
vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
# 安装 llvm,下载地址
https://prereleases.llvm.org/win-snapshots/LLVM-12.0.0-6923b0a7-win64.exe
# 设置 llvm 库环境变量
安装llvm, 设置LIBCLANG_PATH环境变量为llvm_install_dir/bin
# clone rustdesk 源码
git clone https://github.com/rustdesk/rustdesk.git
vcpkg install 一大段过程最后安装完成 参考: VS 2019手动搭建C/C++编译链接环境_vs2019编译器在哪个文件夹-CSDN博客
四、cargo 编译 RustDesk
到这里,才开始真正编译工程(允悲!)
cargo run 或 cargo build --release
这里要注意,Updating很容易失败,解决办法是 换cargo源 和 设置 git http 代理,个人感觉后一个的作用更大,设置后很顺滑;
# 到 rustdek 源码根目录,编译运行
cargo run
报错:且白屏;
其实生成的文件只需三个就可以运行 (src文件夹, rustesk.exe 和 sciter.dll),上图错误是在 debug路径下执行, 拷贝到 src所在的工程根目录则正常显示,bingo!点击启动服务。 最后也可打包发布 (nsis工具)。
错题本:
cl.exe 设为兼容 管理员打开
cmd 的 设置过AutoRun (注册表), 导致错误 需删掉。 参考: vcpkg安装包错误,运行vcvarsall.bat使Visual在退出代码1中失败-腾讯云开发者社区-腾讯云 (tencent.com)
问题: 缺少 plugin 插件 功能。
参考:
在 Windows 10 系统上编译 RustDesk-百度开发者中心 (baidu.com)
在 Windows 10 系统编译 RustDesk - 掘金 (juejin.cn)
【Rust】cargo update或者cargo build国内被墙失败解决办法_failed to update replaced source registry `crates--CSDN博客
vcpkg安装包错误,运行vcvarsall.bat使Visual在退出代码1中失败-腾讯云开发者社区-腾讯云 (tencent.com)