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})
我试图让 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})