【发布时间】:2014-02-28 15:09:37
【问题描述】:
我正在尝试从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 (它说“固定”),并且可以遵循它来gitorious: https://codereview.qt-project.org/#change,53857
所以基本上应该发生的是 QtGui 自动链接到其正确的 OpenGL 后端,无论它可能是什么(桌面 OpenGL、Angle/GLESv2),它在错误报告中说它能够推断出哪个后端从已安装的 Qt 发行版中使用。
显然我正在尝试做的事情应该有效,但事实并非如此。我做错了吗?
【问题讨论】:
标签: c++ qt opengl opengl-es cmake