问题
I'm trying to compile a software that uses QtOpenGL, but I got a link error because -lGLU is not present.
cmake is used.
The only relevant line in CMakeLists.txt files seems to me find_package(Qt4 REQUIRED)
The system is Linux 64bit, Debian unstable, qt version 4.7.3, cmake version 2.8
回答1:
GLU is neither part of OpenGL nor Qt. You must add it as an additional dependency manually; the CMake FindOpenGL module also searches for 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
People will have to change the cache values of OPENGL_glu_LIBRARY and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
Defined in: /usr/share/cmake/Modules/FindOpenGL.cmake
回答2:
I solved it this way:
target_link_libraries(MyProgram ${QT_LIBRARIES} GL GLU glut)
回答3:
If you do set(QT_USE_QTOPENGL TRUE)
then -lGLU
is included in the linker options:
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})
回答4:
I don't know if this is the right solution, but the build completes after I added these lines to CMakeLists.txt
:
find_package(OpenGL)
and added
${OPENGL_LIBRARIES}
to
target_link_libraries
来源:https://stackoverflow.com/questions/6822658/cmake-doesnt-link-libglu-using-qtopengl