2014-02-28 34 views
1

我想從示例/ gui/openglwindow /中的Qt-distribution中獲取Qt示例,並使其在Windows上使用CMake進行編譯/運行。然而,編譯時,它失敗了一堆 的「錯誤LNK2019:解析外部符號__imp_glClear」如何在CMake中使用OpenGL/Angle編譯QtGui示例?

我可以修復通過手動添加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),因爲我使用Qt的構建用ANGLE建造。 (對於這個問題,我猜在桌面/ opengl版本上時,它應該鏈接到GL.lib [或任何系統openGL庫稱爲])。

可能對我來說,它也應該鏈接到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發行版中推斷出使用哪個後端。

顯然我想要做的應該可以工作,但事實並非如此。難道我做錯了什麼?

回答

1

溶液如下:

它被加上一個Qt錯誤,現在固定的,但它也有必要添加${Qt5Gui_EGL_LIBRARIES}${Qt5Gui_OPENGL_LIBRARIES}target_link_libraries

這使得Qt找到正確的OpenGL依賴。