2017-02-28 14 views
1

OpenGLを学習しようとしています。私はClionをIDEとして使用しています。これはCMakeLists.txtファイルを使用してプロジェクトを整理/コンパイルします。OpenGLを学習中にglClearが見つかりません

コンパイラが何らかの理由でglClearを見つけることができません:私はglClear(GL_COLOR_BUFFER_BIT)を呼び出すとき

Undefined symbols for architecture x86_64: 
    "_glClear", referenced from: 
     _main in main.cpp.o 
    "_glClearColor", referenced from: 
     _main in main.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[2]: *** [GraphicsPractice] Error 1 
make[1]: *** [CMakeFiles/GraphicsPractice.dir/all] Error 2 
make: *** [all] Error 2 

は、私は正常GLEWGLFWをリンクすることができるよ、しかし、私のコードが壊れます。なぜ私は分からない。誰かが私を正しい方向に向けるのを助けることができたら、それは素晴らしいことでしょう。

CMakeList.txt

cmake_minimum_required(VERSION 3.6) 
project(GraphicsPractice) 

set(CMAKE_CXX_STANDARD 14) 

set(SOURCE_FILES src/main.cpp) 

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) 
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) 
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) 

add_subdirectory(deps/glfw) 

find_package(OpenGl REQUIRED) 
find_package(GLEW REQUIRED) 

include_directories("deps/glfw/include/") 

add_executable(${PROJECT_NAME} ${SOURCE_FILES}) 

target_link_libraries(${PROJECT_NAME} glfw glew) 

main.cppには

#define GLEW_STATIC 
#include <GL/glew.h> 
#include <GL/glew.h> 
#include <GLFW/glfw3.h> 

int main() { 

    glfwInit(); 

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); 
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); 

    GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", 0, nullptr); 

    glfwMakeContextCurrent(window); 

    glewExperimental = GL_TRUE; 
    glewInit(); 


    while (!glfwWindowShouldClose(window)) { 
     glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
     glClear(GL_COLOR_BUFFER_BIT); 

     if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) 
      glfwSetWindowShouldClose(window, GL_TRUE); 

     glfwSwapBuffers(window); 
     glfwPollEvents(); 
    } 

    glfwTerminate(); 
    return 0; 
} 
+0

コンパイラエラーではなくリンカエラーです。あなたはOpenGLライブラリとリンクしていません。 – xaxxon

+0

[OSX](http://stackoverflow.com/questions/16731572/opengl-object-not-found-for-architecture-x86-64)を使用していますか? – genpfault

+0

@genpfaultはい私は午前です。 –

答えて

2

あなたは、OpenGLライブラリをリンクする必要があります。すなわち:

target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES} glfw glew etc...)

関連する問題