FindQt4无法正确链接QtOpenGL项目
使用QtOpenGL的项目无法链接到gl调用,但只能在Windows上(Linux很高兴)。以下最小案例项目的MSVC 2008错误消息如下:FindQt4无法正确链接QtOpenGL项目,qt,opengl,linker,cmake,Qt,Opengl,Linker,Cmake,使用QtOpenGL的项目无法链接到gl调用,但只能在Windows上(Linux很高兴)。以下最小案例项目的MSVC 2008错误消息如下: 1>gllink.obj : error LNK2019: unresolved external symbol __imp__glLoadIdentity@0 referenced in function "protected: virtual void __thiscall ImageWidget::initializeGL(void)" (?
1>gllink.obj : error LNK2019: unresolved external symbol __imp__glLoadIdentity@0 referenced in function "protected: virtual void __thiscall ImageWidget::initializeGL(void)" (?initializeGL@ImageWidget@@MAEXXZ)
1>gllink.obj : error LNK2019: unresolved external symbol __imp__glMatrixMode@4 referenced in function "protected: virtual void __thiscall ImageWidget::initializeGL(void)" (?initializeGL@ImageWidget@@MAEXXZ)
1>gllink.exe : fatal error LNK1120: 2 unresolved externals
当我手动将“opengl32.lib”添加到“其他依赖项”列表中时,这些错误就会消失,但我认为这不应该是必要的,因为这应该由FindQt4.cmake完成,或者由QtOpenGL对opengl32的依赖项来处理。当然,我一定是弄错了,所以我真的很想知道如何正确地修复这个项目。
gllink.cpp
FindQt4不能解决这个问题,你必须自己搜索OpenGL。现在,CMake提供了一个FindPengl包,因此修复您的项目只需添加
find\u包(OpenGL)
并将库链接到您的目标:
PROJECT( gllink )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
FIND_PACKAGE( OpenGL )
FIND_PACKAGE( Qt4 4.6.0 REQUIRED QtCore QtGui QtOpenGL )
INCLUDE( ${QT_USE_FILE} )
ADD_EXECUTABLE( gllink gllink.cpp )
TARGET_LINK_LIBRARIES( gllink ${OPENGL_LIBRARIES} ${QT_LIBRARIES} )
顺便说一句,你应该检查这些库是否真的找到了,如果没有找到,就警告用户这个问题:)为什么这被否决了?
PROJECT( gllink )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
FIND_PACKAGE( Qt4 4.6.0 REQUIRED COMPONENTS QtCore QtGui QtOpenGL )
INCLUDE( ${QT_USE_FILE} )
ADD_EXECUTABLE( gllink gllink.cpp )
TARGET_LINK_LIBRARIES( gllink ${QT_LIBRARIES} )
PROJECT( gllink )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
FIND_PACKAGE( OpenGL )
FIND_PACKAGE( Qt4 4.6.0 REQUIRED QtCore QtGui QtOpenGL )
INCLUDE( ${QT_USE_FILE} )
ADD_EXECUTABLE( gllink gllink.cpp )
TARGET_LINK_LIBRARIES( gllink ${OPENGL_LIBRARIES} ${QT_LIBRARIES} )