我正在尝试为一堂课学习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)。我试过寻找一个关于它是如何完成的解释但是没有找到答案。是否有人能够帮助解释如何做到这一点?
答案 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 )