c++ - 使用 cmake 时对 `glfwInit' 问题的 undefined reference Clion OpenGL

标签 c++ opengl cmake clion

我正在尝试让 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/

相关文章:

c++ - 在 C++ 中修改 3D 坐标

c++ - 如何将音频与功率谱同步并选择帧长度 AND(做 fft)?

c++ - 如何确保模板参数是所需类型的子类型?

c++ - 将应用程序的主窗口 GUI 布局更改为代码

c++ - 使用 C++ 在 OpenGl 中生成两个对象

c++ - CMake AUTOMOC 文件位于不同的文件夹中

c++ - CMake 无法确定目标的链接器语言

c++ - CMake 是否总是为所有可能的项目配置生成配置?

c++ - 在类中创建指向 vector 的指针

C++ MuParser 解析不符合预期