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
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
I solved it this way:
target_link_libraries(MyProgram ${QT_LIBRARIES} GL GLU glut)
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})
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