2014-04-10 51 views
0
的OpenGL

我得到所有這些未定義的引用:未定義的引用在Ubuntu

Linking CXX executable SimpleGavam 
../../lib/local/Gavam/libGavam.a(MeshUtils.cpp.o): In function `Gavam::DrawMesh(cv::Mat_<float>&, cv::Mat_<float> const&, cv::Mat_<int> const&, cv::Vec<double, 6> const&, double, double, double, double, cv::Size_<int> const&, double, double)': 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:189: undefined reference to `glutSwapBuffers' 
../../lib/local/Gavam/libGavam.a(MeshUtils.cpp.o): In function `Gavam::InitialiseOpenGLDrawingWindow(int, int, double, double, double)': 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:578: undefined reference to `glutInit' 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:580: undefined reference to `glutInitDisplayMode' 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:582: undefined reference to `glutInitWindowSize' 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:584: undefined reference to `glutCreateWindow' 
/home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:585: undefined reference to `glutHideWindow' 
collect2: error: ld returned 1 exit status 
make[2]: *** [exe/SimpleGavam/SimpleGavam] Error 1 
make[1]: *** [exe/SimpleGavam/CMakeFiles/SimpleGavam.dir/all] Error 2 

我使用cmake編譯我的項目,我在CMakeLists

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -lGL -lglut -lGLU") 
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g -std=c++11 -lGL -lglut -lGLU") 
加入過剩的標誌

我有這些包括在文件中:

#include <Gavam.h> 

#include <math.h> 
#include <fstream> 

// OPEN GL 
#include <GL/gl.h> 
#include <GL/freeglut.h> 

我在做什麼錯了?

+0

僅供參考:GLUT不是OpenGL的一部分。它通常與OpenGL一起安裝,並且在opengl.org上有文檔,但它不是規範的一部分。 – datenwolf

回答

1

取而代之的是連接標誌的,使用CMake的標準模塊FindOpenGL

+0

我有添加此,find_package(OpenGL的必填) find_package(GLUT必填) include_directories(庫$ {OPENGL_INCLUDE_DIRS} $ {GLUT_INCLUDE_DIRS}) – SamuelNLP

+0

另外補充target_link_libraries(TARGET_NAME $ {OPENGL_LIBRARIES} $ {GLUT_LIBRARIES}) – Peter

+0

感謝它的工作 – SamuelNLP