CMake - OpenVR 编译问题

Posted

技术标签:

【中文标题】CMake - OpenVR 编译问题【英文标题】:CMake - OpenVR compilation issues 【发布时间】:2019-10-12 15:34:23 【问题描述】:

我目前正在重新设计我的游戏/渲染引擎。我正在跨平台进行操作,因此已切换到使用 CMake 构建过程。我在构建 GLFW 或 GLAD 时没有遇到任何问题,但在使用 openvr 时遇到了问题

目前这是一个相当基本的构建,但我对它相对较新

add_subdirectory(lib/openvr)
add_subdirectory(lib/glfw)
add_subdirectory(lib/glad)

target_link_libraries(flux glad glfw openvr_api64)

这一切都很好,可以包含标题等,但我得到了很多未解决的外部错误

__imp_VR_GetGenericInterface __imp_VR_IsInterfaceVersionValid __imp_VR_InitInternal2

等等……

我查看了存储库中的 CMakeLists 文件,但找不到任何我知道的内容https://github.com/ValveSoftware/openvr

任何输入都会很好

【问题讨论】:

可能,这些未解析的符号是在openvr_api64 库中定义的,但我没有在您的代码中看到与该库的链接。 target_link_libraries 调用中的 ... 有 openvr_api64,我应该更具体一点 好的,现在是时候对您的问题提供更详细的描述了:在问题中包含确切的错误消息。除其他外,该消息应包含链接文件的名称。 (理想情况下,我们希望在您的问题帖子中找到minimal reproducible example)。 【参考方案1】:

ValveSoftware/openvr 的当前 master 分支有一个损坏的构建,它有丢失的文件和错误的包含路径

TL;DR

ValveSoftware/openvr 的构建已损坏,请使用我的 fork 与固定构建: https://github.com/okawo80085/openvr

加长版

它在上一两个版本中被破坏了(idr)

当我开始让 openvr 成为我的驱动程序的适当 dep 以及解决此问题的最简单方法时,我自己遇到了这个问题(因为 Valve 已经有 6 个月以上没有修复它了,即使有为他们修复它的 PR 以及关于损坏的构建提出的问题)是 fork openvr 并自己修复它,这也是我最终做的事情

here is my fork - 它在openvr/libs/platformarchitecture 中有一个工作版本和一个相对最近为 Linux 构建的库,如果您要将其添加为子目录,请使用存储库根目录

【讨论】:

以上是关于CMake - OpenVR 编译问题的主要内容,如果未能解决你的问题,请参考以下文章

使用cmake编译非cmake项目

使用 CMake 编译 openCV:设置架构和优化标志

重新编译使用CMake的旧项目的问题处理

CMake 重新编译

cmake编译问题解决

CMake编译遇到这种ABI不兼容问题不要慌