我已经使用cmake编译了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。
答案 0 :(得分: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/
抱歉我的英语不好
答案 1 :(得分:9)
如果您还没有安装CMake,我强烈建议安装。
即使我建议使用CMake,但可以理解的并不是最简单的工具,但它比制作自己的make文件要好得多。
编译boing.c
(顺便说一句,这是glwf为那些不知道的人提供的一个例子)
在glfw根目录中,然后键入cmake .
,然后键入make
这应该构建所有的例子。
但是,要回答如何创建一个简单的CMake文件,下面是一个用于构建boing.c
的示例CMakeLists.txt:
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
回答你的问题:是否有任何使用glfw
的开源项目可以查看?只需在github上搜索glfw
,你就会发现很多。
答案 2 :(得分:0)
我设法使用以下标志构建glfw项目: 编译器标志:
-c -Wall
链接器标志:
-lglfw3 -lGLEW -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -ldl -lGL -lm -lpthread