编译UltraleapTrackingWebSocket

发布于:2025-06-27 ⋅ 阅读:(15) ⋅ 点赞:(0)

最近要在项目中用到 Leap Motion,无意中发现了一个 Go 语言的 Leap Motion 库:

  • https://gobot.io/documentation/platforms/leapmotion/

示例代码看起来很简单,但是要实际运行起来还需要一些条件。

在示例代码中,我们看到它连接的是 6437 端口,这其实是一种比较老的 Leap Motion 使用方式了, 6437 实际上是一个 websocket 端口,Leap Motion 驱动会通过这个端口将数据帧发送给连接的客户端,这一功能是给 LeapJs 库使用的,让网页端也能使用 Leap Motion,但是自从 5.0 版本以后,这一功能就从 Leap Motion SDK 中删除了。

如果要继续使用这个功能,有两个选择:

  • 一是降 Leap Motion SDK 版本,但是要找到旧版本的下载地址可能要花一些功夫;
  • 二是使用 UltraleapTrackingWebSocket ,他是官方专为新版本 Leap Motion 能继续使 LeapJs 库用而提供的方案。

UltraleapTrackingWebSocket 并未提供预编译版本,需要我们自己编译,Github 地址如下:

  • https://github.com/ultraleap/UltraleapTrackingWebSocket

按照 ReadMe 去编译的话,大概率是编不出来的,缺一些步骤,所以这里记录一下 Windows 上的编译过程。

UltraleapTrackingWebSocket 需要依赖 libwebsocketsLeapSDK ,官方建议我们使用 vcpkg 管理依赖,会简单很多,那咱也是主打一个听劝。

安装 vcpkg

vcpkg 是 C++ 的包管理器,C++ 终于有包管理器了,然而我早就不做 C++ 开发了。。。安装过程比较简单,按照官网指示一步一步操作即可。

首先下载 vcpkg 源码:

> git clone https://github.com/microsoft/vcpkg.git

然后进入源码目录,执行一个脚本:

> cd vcpkg
> bootstrap-vcpkg.bat

这个脚本最终会去下面的地址下载 vcpkg.exe 放到源码目录下。

  • https://github.com/microsoft/vcpkg-tool/releases/download/2025-04-16/vcpkg.exe

这种操作属实是头一回见,放一起发布不好吗?如果你在执行脚本的时候遇到网络问题,可以直接点击链接下载,然后放到源码目录下。注意不要点我这里的链接,当你执行脚本的时候,第一行日志就会打印出下载地址,用那里的地址。

> bootstrap-vcpkg.bat
Downloading https://github.com/microsoft/vcpkg-tool/releases/download/2025-04-16/vcpkg.exe -> E:\project\c\vcpkg\vcpkg.exe...

虽然我们可以自行下载 vcpkg.exe 放到 vcpkg 目录下,但是脚本并不会检测文件是否存在,这样是为了保证版本兼容。我们可以看一下 vcpkg.exe 的下载地址,与版本有关的是一个日期,这个日期在 vcpkg/scripts 目录下的 vcpkg-tool-metadata.txt 文件的第一行。

VCPKG_TOOL_RELEASE_TAG=2025-04-16

其实我们完全可以拿这个日期拼装出正确的地址自行下载。接下来我们稍微修改一下 vcpkg/scripts 目录下的 bootstrap.ps1 文件,他才是真正下载 vcpkg.exe 的脚本。我们将第52行至64行的代码包裹到一个 if 判断中,如果 vcpkg.exe 存在就不去下载了。

if (!(Test-Path "$vcpkgRootDir\vcpkg.exe")) # 新增
{ # 新增
    if ($env:PROCESSOR_ARCHITECTURE -eq 'ARM64' -or $env:PROCESSOR_IDENTIFIER -match "ARMv[8,9] \(64-bit\)") {
        & "$scriptsDir/tls12-download-arm64.exe" github.com "/microsoft/vcpkg-tool/releases/download/$versionDate/vcpkg-arm64.exe" "$vcpkgRootDir\vcpkg.exe"
    } else {
        & "$scriptsDir/tls12-download.exe" github.com "/microsoft/vcpkg-tool/releases/download/$versionDate/vcpkg.exe" "$vcpkgRootDir\vcpkg.exe"
    }

    Write-Host ""

    if ($LASTEXITCODE -ne 0)
    {
        Write-Error "Downloading vcpkg.exe failed. Please check your internet connection, or consider downloading a recent vcpkg.exe from https://github.com/microsoft/vcpkg-tool with a browser."
        throw
    }
} # 新增

其实 bootstrap-vcpkg.bat 的全部功能就是调用 bootstrap.ps1 ,之所以不直接调用是因为 Windows 默认的脚本执行策略是”严格”,会阻止脚本执行,大家可以参考微软官网

如果我们自行下载 vcpkg.exe 的话,其实这个脚本已经没有执行的必要了。但是如果我们依然执行的话,会看到一段输出:

vcpkg package management program version 2025-04-16-f9b6c6917b23c1ccf16c1a9f015ebabf8f615045

See LICENSE.txt for license information.
Telemetry
---------
vcpkg collects usage data in order to help us improve your experience.
The data collected by Microsoft is anonymous.
You can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,
passing --disable-metrics to vcpkg on the command line,
or by setting the VCPKG_DISABLE_METRICS environment variable.

Read more about vcpkg telemetry at docs/about/privacy.md

意思很明显,vcpkg 会搜集用户使用数据,但是可以禁用。

第一种方式是调用 vcpkg.exe 时加上一个 --disable-metrics 参数,但是每次都要加肯定不是我们想要的。

第二种方式是调用安装脚本 bootstrap-vcpkg.bat 时,加上 -disableMetrics 参数。它的本质是在 vcpkg 目录下创建一个名为 vcpkg.disable-metrics 的空文件,所以,如果你安装时没有传这个参数,可以自行创建这个文件。

第三种方式是设置 VCPKG_DISABLE_METRICS 环境变量。第三和第二种方式都是永久性的,所以选哪种都可以。

最后将源码目录添加到环境变量,这样 vcpkg 就安装好了。

编译UltraleapTrackingWebSocket

基本上还是按照官方步骤来,编译之前先下载依赖:

> vcpkg install libwebsockets --triplet x64-windows

这一步可能会遇到网络问题,重试几次就好了。然后下载 UltraleapTrackingWebSocket 源码,进入源码目录创建 build 文件夹:

> git clone https://github.com/ultraleap/UltraleapTrackingWebSocket.git
> cd ultraleap-tracking-websocket

> mkdir build
> cd build

下一步是 make 我们的工程,这里有两个要注意的地方:

一是将 -DCMAKE_TOOLCHAIN_FILE 后面的路径换成我们自己的 vcpkg 安装目录。二是需要设置下 LeapSDK 的目录,如果已经安装过 Leap Motion SDK,在安装目录下能找到,如果没有安装,可以直接从👉这里👈下载,然后找个地方解压,设置下 LeapSDK_DIR 环境变量指向解压的目录即可,这里设置临时环境变量就行了。

> set LeapSDK_DIR=E:\project\c\UltraleapTrackingWebSocket\LeapSDK
> cmake -DCMAKE_TOOLCHAIN_FILE=E:/project/c/vcpkg/scripts/buildsystems/vcpkg.cmake ..

make 成功以后我们就可以我们就可以编译了。

cmake --build .

可以用 cmake 编译,也可以双击 build 目录下的 LeapWS.sln 在 visual studio 中打开编译。

运行

在命令行运行编译出来的 Ultraleap-Tracking-WS.exe ,然后再运行 Go 的 Leap Motion 示例,就能看到手势数据了。


网站公告

今日签到

点亮在社区的每一天
去签到