我正在尝试让 OpenGl 项目在 CLion 上运行。我使用 3 个不同的库:GLEW、GLFW 和 SOIL。
这些包含似乎工作正常,所有内容都已找到,但每次我尝试构建时都会出现错误:
undefined reference to `glfwInit'
undefined reference to `glfwWindowHint'
undefined reference to `glfwWindowHint'
undefined reference to `glfwWindowHint'
undefined reference to `glfwWindowHint'
undefined reference to `glfwCreateWindow'
...
C:/Users/John/OneDrive/OpenGL Projects/OpenGL/Lib_files/SOIL/lib/libSOIL.a(SOIL.o):SOIL.c:(.text+0x3e): undefined reference to `glGetString@4'
C:/Users/John/OneDrive/OpenGL Projects/OpenGL/Lib_files/SOIL/lib/libSOIL.a(SOIL.o):SOIL.c:(.text+0x72): undefined reference to `glGetString@4'
...
这是我在 cmake 文件中得到的内容:
cmake_minimum_required(VERSION 3.6)
project(OpenGL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp Shader.h Shader.cpp)
set(LIBS_DIR C:/Users/John/OneDrive/OpenGL\ Projects/OpenGL/Lib_files)
set(GLEW_ROOT_DIR ${LIBS_DIR}/GLEW )
set(GLFW_ROOT_DIR ${LIBS_DIR}/GLFW )
set(SOIL_ROOT_DIR ${LIBS_DIR}/SOIL )
set(GLEW_INCLUDE_DIRS ${GLEW_ROOT_DIR}/include)
set(GLFW_INCLUDE_DIRS ${GLFW_ROOT_DIR}/include)
set(SOIL_INCLUDE_DIRS ${SOIL_ROOT_DIR}/include)
set(GLEW_LIBRARY ${GLEW_ROOT_DIR}/lib/libglew32.a)
set(GLUT_LIBRARY ${GLFW_ROOT_DIR}/lib/libglfw3.a)
set(SOIL_LIBRARY ${SOIL_ROOT_DIR}/lib/libSOIL.a)
include_directories( ${GLEW_INCLUDE_DIRS} ${GLFW_INCLUDE_DIRS} ${SOIL_INCLUDE_DIRS})
add_executable(OpenGL ${SOURCE_FILES})
target_link_libraries(OpenGL libopengl32.a ${GLEW_LIBRARY} ${GLFW_LIBRARY} ${SOIL_LIBRARY})
一旦我尝试构建,GLFW 和 SOIL 就会出现大量“未定义引用”错误,但 GLEW 却不会。
我做错了什么?
最佳答案
我也遇到了这个问题,在 target_link_libraries() 末尾添加“glfw”可能会有所帮助。我从 reddit 得到这个解决方案。 https://www.reddit.com/r/GraphicsProgramming/comments/76rtt5/linking_glfw3_with_clion/
关于c++ - 使用 cmake 时对 `glfwInit' 问题的 undefined reference Clion OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421396/