如何在CMake中使用OpenGL / Angle编译QtGui示例?

时间:2014-02-28 15:09:38

标签: c++ qt opengl opengl-es cmake

我试图从examples / gui / openglwindow /中的Qt-distribution中获取Qt示例,并使其在Windows上使用CMake进行编译/运行。但是,在编译时,它会失败 “错误LNK2019:未解析的外部符号__imp_glClear”

我可以通过手动将C:\ Qt_install \ lib \ libGLESv2d.lib添加到链接器路径来解决这个问题,但是,这显然不是CMake应该如何工作的。

我的CMakeLists非常简单:

PROJECT( oglwin )
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 )
cmake_policy(SET CMP0020 NEW) # for Qt: auto-link to qtmain.lib

set(CMAKE_AUTOMOC ON)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)

SET(SOURCE
 main.cpp
 openglwindow.cpp
)
SET(HEADERS
 openglwindow.h
)
ADD_EXECUTABLE( oglwin  ${SOURCE} ${HEADERS} )
TARGET_LINK_LIBRARIES( oglwin  Qt5::Core Qt5::Gui )

正如我之前提到的,我的期望是这会自动链接到libGLESv2.lib(或libGLESv2d.lib),因为我使用的是使用ANGLE构建的Qt-build。 (就此而言,我想在桌面/ opengl构建时,它应该链接到GL.lib [或者调用系统openGL lib]。

可能在我的情况下,它也应该链接到C:\ Qt_install \ lib \ libEGLd.lib。

围绕一些相关主题,例如: https://bugreports.qt-project.org/browse/QTBUG-29132 (在那里它说“固定”),人们可以遵循这一点: https://codereview.qt-project.org/#change,53857

所以基本上应该发生的是QtGui自动链接到其正确的OpenGL后端,无论可能是什么(桌面OpenGL,角度/ GLESv2),它在bug报告中说它能够推断出哪个后端到使用已安装的Qt发行版。

显然我正在尝试做的事情应该有效,但事实并非如此。我做错了吗?

1 个答案:

答案 0 :(得分:1)

解决方案如下:

它与一个现已修复的Qt错误相结合,但还需要将${Qt5Gui_EGL_LIBRARIES}${Qt5Gui_OPENGL_LIBRARIES}添加到target_link_libraries

这使得Qt找到了正确的OpenGL依赖。