跳转到内容

编译配置

默认情况下,手柄 App 向端口 12121 广播数据。SDK 构造时传入的端口需与之匹配:

RetroidGamepad rc(12121); ///< 端口需与 App 配置一致

手机端 App 需要知道开发主机的 IP 地址才能发送 UDP 数据:

  • 确保手机与开发主机处于同一局域网(连接同一 WiFi)
  • 在开发主机上查看 IP 地址:
Terminal window
ip addr show # Linux
ipconfig # Windows
  • 在手柄 App 中配置开发主机的 IP 地址

确保开发主机的防火墙允许 UDP 端口 12121 的入站连接:

Terminal window
# 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 管理),首次编译前需初始化:

Terminal window
cd gamepad
git submodule update --init --recursive

进入项目目录,创建 build 文件夹并编译:

Terminal window
cd gamepad
mkdir build && cd build
cmake ..
make -j

编译产物:

产物说明
libgamepad_receiver.a静态库,供上层应用链接
example/example_retroidRetroid 手柄示例可执行文件
example/example_skydroidSkydroid 手柄示例可执行文件
Terminal window
cmake .. -DBUILD_EXAMPLE=OFF
make -j

若需在 ARM 平台(如 Lite3 机载主机)上运行,取消 CMakeLists.txt 中的交叉编译器注释:

SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

然后执行编译:

Terminal window
cmake ..
make -j

CMakeLists.txt 主要配置项:

参数默认值说明
BUILD_EXAMPLEON是否编译示例程序

链接的依赖库:

target_link_libraries(gamepad_receiver PRIVATE -lpthread -lm -lrt -ldl -lstdc++)

项目根目录下提供了 controlapp.apk,安装到 Android 手机即可使用。

App 图标

在手柄 App 中需要配置:

  • 目标 IP:开发主机的 IP 地址(确保手机与主机在同一局域网)
  • 目标端口:默认 12121,需与 SDK 构造参数一致
  • 手柄类型:选择 Retroid 或 Skydroid

IP 配置界面

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