OpenGL 存在于 minGW 文件夹中,但 CLion 不能 reach/see

OpenGL is present in the minGW folder, but CLion can't reach/see it

我试图让 OpenGL 在 CLion 中工作,从 freeglut 下载 bin/include/library 文件并将它们复制到 minGW。它们在那里,CLion 在编译时使用那个 minGW 文件夹,但是当它尝试编译 freeglut 提供的测试代码时,它 returns 和 "fatal error: GL/glut.h: No such file or directory #include <GL/glut.h>"

我已经尝试过不同版本的 CMakeLists,所有版本 return 都有同样的问题。如果我复制项目旁边的 GL 文件夹,我会得到大量未定义的引用。

在尝试了这个 CMakeList 之后,我得到了同样的错误。 (来自

cmake_minimum_required(VERSION 3.14)
project(gltest)

set(CMAKE_CXX_STANDARD 14)
set (CMAKE_CXX_FLAGS "-lglut")
set (CMAKE_CXX_FLAGS "-lGL")
set (CMAKE_CXX_FLAGS "-lGLU")
include_directories(GL/)

add_executable(gltest Callbacks.c HelloGLUT.c)

target_link_libraries(gltest -lglut -lGL -lGLU)

更新

使用新的 CMakeList 后(如评论中所建议,我非常感谢这里的好人)我遇到了一些新错误,但 CLion 现在似乎能够访问 GL 库。

CMakeList:

cmake_minimum_required(VERSION 3.14)
project(gltest)

set(SOURCE_FILES Callbacks.c HelloGLUT.c)
set(OPENGL_INCLUDE_DIR C:/minGW/mingw64/include)
set(OPENGL_LIBRARY C:/minGW/mingw64/lib)

find_package(OPENGL REQUIRED)

add_executable(gltest ${SOURCE_FILES})
include_directories(${OPENGL_INCLUDE_DIR})
target_link_libraries(gltest ${OPENGL_LIBRARY} )

错误: CMakeFiles\gltest.dir/objects.a(Callbacks.c.obj): In function "glutInit_ATEXIT_HACK': C:/minGW/mingw64/include/GL/freeglut_std.h:637: undefined reference to "__imp___glutInitWithExit" CMakeFiles\gltest.dir/objects.a(Callbacks.c.obj): In function "glutCreateWindow_ATEXIT_HACK": 还有几个以相同方式对各种“__imp___glut”函数的未定义引用。有什么想法吗?

如果我使用 target_link_libraries(gltest ${OPENGL_LIBRARY} glut GL GLU) 我得到 "C:/minGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lglut " , lGL 和 lGLU

相同

那些 运行 陷入同样错误的人的解决方案

确保您遵循自述文件并将 freeglut 安装在 mingw 内的不同文件夹中(对我来说是 C:/minGW/mingw64/freeglut),然后将 freeglut 的 include 和 lib 复制到那里。确保你有一个 FindFREEGLUT.cmake 文件(我从 https://git.omkov.net/Jamozed/Chip8Emulator/releases 中提取了我的文件,如果你有一个只有 FindFREEGLUT.cmake 的下载,请随意 post 它)。将 FindFREEGLUT.cmake 复制到您的项目目录中,例如 "C:/CLionProjects/gltest/cmake/FindFREEGLUT.cmake"。在此之后,我使用了以下 CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(gltest)

set(SOURCE_FILES Callbacks.c HelloGLUT.c)
set(GLUT_INCLUDE_DIR "C:/minGW/mingw64/freeglut/include")
set(OPENGL_LIBRARY_DIR "C:/minGW/mingw64/freeglut/lib")

# GLUT
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
if(NOT GLUT_FOUND)
    message(ERROR "GLUT not found!")
endif(NOT GLUT_FOUND)

# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
if(NOT OPENGL_FOUND)
    message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)


add_executable(gltest ${SOURCE_FILES})
target_link_libraries(gltest ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})