编译配置
确定 App 发送端口
Section titled “确定 App 发送端口”默认情况下,手柄 App 向端口 12121 广播数据。SDK 构造时传入的端口需与之匹配:
RetroidGamepad rc(12121); ///< 端口需与 App 配置一致确定开发主机 IP
Section titled “确定开发主机 IP”手机端 App 需要知道开发主机的 IP 地址才能发送 UDP 数据:
- 确保手机与开发主机处于同一局域网(连接同一 WiFi)
- 在开发主机上查看 IP 地址:
ip addr show # Linuxipconfig # Windows- 在手柄 App 中配置开发主机的 IP 地址
确保开发主机的防火墙允许 UDP 端口 12121 的入站连接:
# Linux (Ubuntu)sudo ufw allow 12121/udp
# Windows# 在 Windows Defender 防火墙中添加 UDP 12121 入站规则| 项目 | 要求 |
|---|---|
| 操作系统 | Linux(Ubuntu 推荐)或 Windows(WSL) |
| CMake | ≥ 3.10 |
| 编译器 | C++17 编译器 |
| Git | 用于拉取 fmt 子模块 |
示例程序依赖 fmt 库(通过 git submodule 管理),首次编译前需初始化:
cd gamepadgit submodule update --init --recursive编译 SDK 和示例
Section titled “编译 SDK 和示例”进入项目目录,创建 build 文件夹并编译:
cd gamepadmkdir build && cd buildcmake ..make -j编译产物:
| 产物 | 说明 |
|---|---|
libgamepad_receiver.a | 静态库,供上层应用链接 |
example/example_retroid | Retroid 手柄示例可执行文件 |
example/example_skydroid | Skydroid 手柄示例可执行文件 |
仅编译静态库(不含示例)
Section titled “仅编译静态库(不含示例)”cmake .. -DBUILD_EXAMPLE=OFFmake -jARM 交叉编译
Section titled “ARM 交叉编译”若需在 ARM 平台(如 Lite3 机载主机)上运行,取消 CMakeLists.txt 中的交叉编译器注释:
SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")然后执行编译:
cmake ..make -jCMake 配置说明
Section titled “CMake 配置说明”CMakeLists.txt 主要配置项:
| 参数 | 默认值 | 说明 |
|---|---|---|
BUILD_EXAMPLE | ON | 是否编译示例程序 |
链接的依赖库:
target_link_libraries(gamepad_receiver PRIVATE -lpthread -lm -lrt -ldl -lstdc++)手机端 App
Section titled “手机端 App”App 安装
Section titled “App 安装”项目根目录下提供了 controlapp.apk,安装到 Android 手机即可使用。
![]()
App 配置
Section titled “App 配置”在手柄 App 中需要配置:
- 目标 IP:开发主机的 IP 地址(确保手机与主机在同一局域网)
- 目标端口:默认
12121,需与 SDK 构造参数一致 - 手柄类型:选择 Retroid 或 Skydroid

- 确保手机与开发主机连接同一 WiFi
- 打开 App,配置目标 IP 和端口
- 在开发主机上运行示例程序或自定义程序
- 操作手柄,观察终端输出是否实时更新