让freeglut库与opengl一起使用

时间:2016-08-02 00:46:00

标签: c++ opengl clion freeglut

我正在尝试为一堂课学习opengl但是我在设置时遇到了麻烦。我正在使用Windows,IDE CLion和cygwin64。到目前为止,我已经能够编译并运行Gl.h和Glu.h但是我无法获得freeglut的静态库。

现在在CMakeLists.txt文件的最后一行编程错误:

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)

有错误

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

我调查了它,看起来在下载freeglut后我需要从源代码创建库文件(特别是.a文件libfreeglut32.a)。我试过寻找一个关于它是如何完成的解释但是没有找到答案。是否有人能够帮助解释如何做到这一点?

1 个答案:

答案 0 :(得分:1)

与OpenGL不同,OpenGLUT是一个可选的第三方库,必须单独安装。

最简单的做法是简单地将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 )