【发布时间】:2020-05-20 14:26:45
【问题描述】:
我正在尝试将 GLFW 从源代码添加到我的项目中。我按照文档中的说明做了,但出现错误。
错误:
/usr/bin/ld: CMakeFiles/mancala_graphics.dir/main.cpp.o: 在函数'main'中:
/path/to/clion/mancala_graphics/main.cpp:47:未定义对“glClear”的引用
collect2: 错误:ld 返回 1 个退出状态
make[ 3 ]: *** [CMakeFiles/mancala_graphics.dir/build.make:88: mancala_graphics] 错误 1
make[1]: *** [CMakeFiles/Makefile2:115: CMakeFiles/mancala_graphics.dir/all] 错误2
make[2]: *** [CMakeFiles/Makefile2:122: CMakeFiles/mancala_graphics.dir/rule] 错误2
make: *** [Makefile:164: mancala_graphics] 错误 2
源代码如下,来自documentation:
#include <GLFW/glfw3.h>
int main() {
GLFWwindow *window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window)) {
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
CMake 在下面,这也是来自documentation:
cmake_minimum_required(VERSION 3.16)
project(mancala_graphics)
set(CMAKE_CXX_STANDARD 20)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(Dependencies/GLFW)
add_executable(mancala_graphics main.cpp)
target_link_libraries(mancala_graphics glfw)
您在图片 中看到的似乎是 gl.h 中定义的 glClear
当我转到 gl.h 时,它不在我下载并保存 Dependencies/ 的源文件中,但在 /usr/include/GL/gl.h 中它可能是错误的来源,因为当我打开头文件时,我看到一条警告说如您所见,该文件不属于任何项目:
问题是:这个配置有什么问题,为什么我不能运行文档中的代码 sn-p?
还有一个问题:如何将 GLFW 从源代码添加到我的项目中?
IDE:CLion
操作系统:Linux / Ubuntu
编辑
cmake_minimum_required(VERSION 3.16)
project(mancala_graphics)
set(CMAKE_CXX_STANDARD 20)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
find_package(OpenGL REQUIRED)
add_subdirectory(Dependencies/GLFW)
add_executable(mancala_graphics main.cpp)
target_link_libraries(mancala_graphics OpenGL::GL)
target_link_libraries(mancala_graphics glfw)
当我像上面的代码一样编写 cmake 时,但感觉有些不对劲。
【问题讨论】:
标签: c++ opengl cmake clion glfw