在做毕设的时候,对 freerdp 非常感兴趣,也想通过修改源代码来实现自己所需的功能,所以尝试自己编译了一回,记录如下。
环境准备
- Windows 10
- Visual Studio 2022
- Cmake 4.0.0-rc 4
- OpenSSL 1.1.1
- Libusb 1.0.24
- Zlib 1.3
- FreeRDP stable-2.0
安装完 OpenSSL 之后,需要配置环境变量:
OPENSSL_ROOT_DIR=C:\Program Files\OpenSSL-Win64
OPENSSL_INCLUDE_DIR=C:\Program Files\OpenSSL-Win64\include
并在 Path
中添加 OpenSSL 的 bin 目录:
C:\Program Files\OpenSSL-Win64\bin
安装 zlib
打开 Cmake GUI,配置 zlib 的源码目录和输出目录,然后点击 Configure
:
出现如下红色告警,再次点击 Configure
即可:
然后点击 Generate
:
最后点击 Open Project
,将自动使用 Visual Studio 打开项目。
右键点击 INSTALL
项目,将其设置为启动项目:
再次右键点击 INSTALL
项目,依次选择 “属性” -> “生成事件” -> “生成后事件”,修改“配置”为 Release
,并复制“命令行”中的执行命令:
复制 "C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake
,然后删除“命令行”中的所有内容:
点击确定,最后修改 Visual Studio 中的生成模式为
Release
,点击生成:
以管理员身份启动 Powershell,然后修改上面复制的命令并执行:
cmake -DBUILD_TYPE=RELEASE -P D:\Projects\Cpp\zlib-1.3\build\cmake_install.cmake
Zlib 安装完成。
编译 FreeRDP
使用以下命令克隆项目:
git clone https://github.com/FreeRDP/FreeRDP.git --depth=1 -b stable-2.0 freerdp-2.0
修改以下几个 CMakeLists. Txt 中的 cmake_minimum_required
:
/CMakeLists.txt
/winpr/CMakeLists.txt
/rdtk/CMakeLists.txt
将 cmake_minimum_required(VERSION 2.8)
修改为 cmake_minimum_required(VERSION 3.5)
。
打开 Cmake GUI,配置 FreeRDP 的源码目录和输出目录,然后点击 Configure
:
有一些警告信息,但只要没有错误即可。搜索 LIBUSB
,设置以下两个字段:
再搜索 WITH_SERVER
,勾上选项:
然后点击 Generate
、Open Project
,即可自动打开项目:
打开 “Client” -> “Common”,右键点击 “freerdp-client” ,选择属性:
选择 “链接器” -> “输入”,编辑 “附加依赖项”:
填入 libusb 的依赖库路径:D:\Projects\Cpp\libusb-1.0.24\VS2019\MS64\dll\libusb-1.0.lib
点击确定即可。
编译客户端
设置生成模式为 Release
,然后选中 “Client” -> “Windows” -> “wfreerdp-client”,点击 “生成”:
在 /build/Release
目录下应该存在 wfreerdp.exe
:
编译服务端
设置生成模式为 Release
,然后选中 “Server” -> “Windows” -> “wfreerdp-server-cli”,点击 “生成”:
在 /build/Release
目录下应该存在 wfreerdp-server.exe
。