2011-07-25 40 views
2

我想編譯一個使用QtOpenGL的軟件,但我得到一個鏈接錯誤,因爲-lGLU不存在。使用cmake 。 中的CMakeLists.txt文件的唯一相關行我看來find_package(Qt4 REQUIRED)cmake沒有鏈接使用QtOpenGL的libGLU

該系統是64位的Linux,Debian的不穩定,QT版本4.7.3,cmake的版本2.8

回答

4

GLU是OpenGL的也不是Qt的既不一部分。您必須手動添加它作爲附加依賴項; CMake的FindOpenGL模塊還搜索GLU

% cmake --help-module FindOpenGL 
cmake version 2.8.1 
    FindOpenGL 
     Try to find OpenGL 

     Once done this will define 


     OPENGL_FOUND  - system has OpenGL 
     OPENGL_XMESA_FOUND - system has XMESA 
     OPENGL_GLU_FOUND - system has GLU 
     OPENGL_INCLUDE_DIR - the GL include directory 
     OPENGL_LIBRARIES - Link these to use OpenGL and GLU 


     If you want to use just GL you can use these values 

     OPENGL_gl_LIBRARY - Path to OpenGL Library 
     OPENGL_glu_LIBRARY - Path to GLU Library 


     On OSX default to using the framework version of opengl 

人會 必須改變OPENGL_glu_LIBRARY和 OPENGL_gl_LIBRARY的緩存值如果你對OSX

 Defined in: /usr/share/cmake/Modules/FindOpenGL.cmake 
2

使用OpenGL與X11 set(QT_USE_QTOPENGL TRUE) then -lGLU包含在鏈接器選項中:

find_package(Qt4 REQUIRED) 
set(QT_USE_QTOPENGL TRUE) 
include(${QT_USE_FILE}) 
message("Libs: ${QT_LIBRARIES}") 
add_executable(program main.cpp) 
target_link_libraries(program ${QT_LIBRARIES}) 
+0

中的CMakeLists.txt 'find_package(Qt4的需要)以下行'' 設置(QT_USE_QTXML 1)'' 設置(QT_USE_QTOPEN GL 1)'' 設置(QT_USE_QT3SUPPORT 1)'' 包括($ {QT_USE_FILE})'' 消息( 「利布斯:$ {QT_LIBRARIES}」)' 給 '利布斯:/usr/lib/libQt3Support.so ; /usr/lib/libQtOpenGL.so; /usr/lib/libQtGui.so; /usr/lib/libQtXml.so; /usr/lib/libQtSql.so; /usr/lib/libQtNetwork.so;/usr/lib中/ libQtCore.so' – rebli

+0

@rebli我不認爲我可以幫助任何進一步。我係統上這些行的輸出包含'-lGL'和'-lGLU'。我也使用cmake 2.8版。 – antonakos

0

我不知道這是否是正確的解決方案,但在構建完成 我加入的CMakeLists.txt行 find_package(OpenGL的) 並添加 $ {} OPENGL_LIBRARIES到 target_link_libraries

3

我解決了它這種方式:

target_link_libraries(MyProgram ${QT_LIBRARIES} GL GLU glut)