2011-02-25 58 views
1

爲了顯示pb,我將編程減少到了最低限度:cmake不會抱怨,也不會運行(運行Linux/libglew 1.5/cmake 2.8.2)。該程序段錯誤,我不知道爲什麼/我現在應該採取哪些步驟來解決pb。CMakeLists.txt /我的庫安裝中缺少什麼?

render.cpp來源:

#include <GL/glew.h> 
#include <GL/glut.h> 
#include <GL/glext.h> 
#ifndef WIN32 
#include <GL/glx.h> 
#endif 

#include <iostream> 
#include <assert.h> 

using namespace std; 

int main() 
{ 
    cout << "Before init" << endl; 
    GLenum err = glewInit(); 
    cout << "After init" << endl; 
    if (err != GLEW_OK) 
     cout << "Initialization error" << endl; 
    else{   
     cout << "Successful init" << endl; 
     assert(glCreateShader); 
     GLuint f = glCreateShader(GL_FRAGMENT_SHADER); 
    } 
} 

CMakeList的含量爲:

cmake_minimum_required (VERSION 2.6) 
project (render) 
IF(CMAKE_COMPILER_IS_GNUCC) 
    SET(CMAKE_CXX_FLAGS 
    "${CMAKE_CXX_FLAGS} -Wall -std=c++0x") 
ENDIF(CMAKE_COMPILER_IS_GNUCC) 

# Some directory shortcuts 
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/conf) 

INCLUDE(FindOpenGL REQUIRED) 
INCLUDE(FindGLEW REQUIRED) 
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) 
INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) 

message(${OPENGL_LIBRARIES}) 
message(${GLEW_INCLUDE_DIR}) 
message(${GLEW_LIBRARIES}) 

add_executable(render render.cpp) 
target_link_libraries(render ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES}) 

如所提到的,它編譯,並在調用glewInit()段錯誤。我不知道在這一點上怎麼尋找.. 任何幫助將是巨大的,

感謝

回答

1

可能是有用的人,我解決了這個問題:使用OpenGL,則需要爲之前創建上下文能夠調用glewInit()。這可以使用SDL庫來完成(簡化此任務)。看看this教程。