2016-08-02 4 views
0

클래스 용 OpenGL을 배우려고하는데 설정을 가져 오는 데 문제가 있습니다. 저는 IDE CLion과 cygwin64를 사용하여 Windows를 사용하고 있습니다. 지금까지 나는 Gl.h와 Glu.h를 컴파일하고 실행할 수 있었지만 freeglut을위한 정적 라이브러리를 얻는데 어려움을 겪고있다.opengl과 함께 작동하도록 freeglut 라이브러리 가져 오기

CMakeLists.txt 파일의 마지막 줄에

지금 프로그램 오류 : 오류

cannot find -lfreeglut 
collect2: error: ld returned 1 exit status 

나는 그것으로보고하고 freeglut를 다운로드 후 내가 만들 필요가 나타납니다와

cmake_minimum_required(VERSION 3.5) 
project(OpenGLAugust) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 
add_executable(OpenGLAugust ${SOURCE_FILES}) 
target_link_libraries(OpenGLAugust libopengl32.a libglu32.a libfreeglut.a) 

소스 파일에서 라이브러리 파일 (특히 .a 파일 libfreeglut32.a). 어떻게 완료 되었는가에 대한 설명을 찾고자했지만 답변을 찾지 못했습니다. 누구든지 어떻게하는지 설명하는 것을 도울 수 있습니까?

답변

1

FreeGLUT은 Windows ABI에서 컴파일러 도구 체인에서 사용할 수있는 OpenGL과 달리 별도로 설치해야하는 선택적 타사 라이브러리입니다.

가장 간단한 과정은 프로젝트의 하위 디렉토리에 FreeGLUT 소스를 드롭하고 CMakeLists.txt에 추가하는 것입니다. FreeGLUT은 CMake 구성을 사용할 준비가되어있어 "잘 작동합니다".

보조 노트에

, 당신은 사용하지 말아야

target_link_libraries(OpenGLAugust libopengl32.a libglu32.a …) 

하지만

find_package(OpenGL) 
target_link_libraries(OpenGLAugust 
    ${OPENGL_gl_LIBRARY} 
    ${OPENGL_glu_LIBRARY} 
    …) 

즉, 합계로 프로젝트의 서브 디렉토리에 FreeGLUT 소스를 추출하고 CMakeLists를

cmake_minimum_required(VERSION 3.5) 
project(OpenGLAugust) 
find_package(OpenGL) 
add_subdirectory(freeglut) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 
add_executable(OpenGLAugust ${SOURCE_FILES}) 
target_link_libraries(OpenGLAugust 
     ${OPENGL_gl_LIBRARY} 
     ${OPENGL_glu_LIBRARY} 
     freeglut_static) 
+0

으로 변경해야합니다. "could not find X11"오류가 발생했습니다. x-org 서버 및 xinit를 포함하여 cygwin/x를 다운로드했지만 여전히 작동하지 않습니다. –

+1

@ChrisProcak : 글쎄, 문제는 Cygwin이 Linux와 최대한의 호환성을 제공하려고한다는 것입니다. 그리고 리눅스에서는 X 서버를 통해 그래픽을 처리합니다. 그러나 Windows에는 X 서버가 없습니다 (Cygwin과 함께 제공되는 X 서버를 시작하지 않는 한, OpenGL 지원은 좋지 않습니다). * Cygwin 대신 MinGW를 사용하여 프로젝트를 컴파일하는 것이 좋습니다. 설치하는 가장 쉬운 방법은 MSys2 설치 ​​프로그램 https://msys2.github.io/를 사용하여 MSys2 환경을 얻은 다음 mingw를 설치하는 것입니다. 그러면 원하는 OpenGL 지원을 얻을 수 있습니다. * – datenwolf

관련 문제