在做毕设的时候,对 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 ,勾上选项:

然后点击 GenerateOpen 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