5

我已经使用 cmake 和 make 编译了 glfw3 和包含的示例,没有问题。开始写我的第一个项目。作为 opengl 和 glfw 的新手,并且对 C 和 CMake 缺乏经验,我很难理解示例构建文件,甚至是要链接的库和/或要在我的项目中使用的编译器参数。

假设我现在只有一个文件夹和一个文件boing.c。我将如何编译它?

简单地运行gcc -lglfw3 -lm -lGL -lGLU boing.c会给出一堵未定义的引用墙,从 sin 和 atan2 开始,然后是各种 gl 和 glfw 的东西。我错过了什么?

我将如何编写makefile?是否有 cmake 模板或示例,我只是不明白如何使用或适应?有谁知道使用 glfw3 的开源项目(或者更好的是一个小例子或模板)——所以我可以环顾四周?

当我想在某个时候使用多平台时,我猜 cmake 会是最好的。但是我怎样才能在没有太多麻烦的情况下编译****的东西,这样我就可以开始学习一些教程了..?

我是一个使用 32 位 Ubuntu raring 的中度菜鸟。暂时只使用 Vim。

4

3 回答 3

12

您需要包含这样的库

-lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi

#Ref: http: //www.blogosfera.co.uk/2013/07/how-to-build-install-glfw-3-and-use-it-in-a-linux-project/

对不起我英语不好

于 2013-07-27T20:28:38.353 回答
10

如果您还没有安装 CMake,我强烈建议您安装。

尽管我建议使用 CMake,但可以理解它不是最容易使用的工具,但比制作自己的 make 文件要好得多。

编译boing.c(顺便说一句,这是 glwf 为那些不知道的人提供的示例)在 glfw 根目录中,cmake .然后键入make

这应该建立所有的例子。

但是,要回答如何制作一个简单的 CMake 文件,这里有一个要构建的 CMakeLists.txt 示例boing.c

cmake_minimum_required(VERSION 2.8)

project( BOING_PROJECT ) # this is case sensitive 

######################################
# finds OpenGL, GLU and X11
find_package(OpenGL REQUIRED)
if(NOT OPENGL_FOUND)
    message("ERROR: OpenGL not found")
endif(NOT OPENGL_FOUND)
set(GL_LIBRARY GL GLU X11)

add_executable(boing boing.c)

# linking "glfw" and not "glfw3" 
# assumes that glfw was built with BUILD_SHARED_LIBS to ON
target_link_libraries(boing glfw ${GL_LIBRARY} m)

上面的目录结构是

boing_project/  
    boing.c  
    CMakeLists.txt  

但是,这并不能解释为什么您会遇到所有这些错误。

您的错误的原因是您以错误的顺序向 GCC 提供了参数,尝试
gcc boing.c -lglfw3 -lm -lGL -lGLU
或更好
gcc boing.c -o boing -Wall -lglfw3 -lm -lGL -lGLU

回答您的问题:是否有任何可以使用的开源项目glfwglfw只要在github上搜索,你就会发现很多。

于 2013-07-30T04:17:52.773 回答
0

我设法使用以下标志构建 glfw 项目:编译器标志:

-c -Wall

链接器标志:

-lglfw3 -lGLEW -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -ldl -lGL -lm -lpthread
于 2016-02-04T09:08:30.137 回答