Ubuntu下编译GLFW源码并使用

本文介绍了如何获取并编译GLFW源码,解决编译过程中可能出现的依赖库缺失问题,以及如何运行GLFW示例程序。在项目中使用编译好的GLFW库,需要指定头文件和库路径,并展示了简单的GLFW项目结构和CMakeLists.txt配置。
摘要由CSDN通过智能技术生成

一、获取GLFW源码

开发OpenGL项目经常会用到GLFW,由于OpenGL只负责图形的渲染,并未提供创建窗口、相应鼠标键盘等事件的功能,这个工作由GLFW负责。
通过官网获取源码压缩文件,然后解压。我下载的版本为3.3.8

二、源码编译

进入到GLFW源码文件夹,依次执行如下命令。

mkdir build #创建build文件夹用来存放构建好的项目
cd build	#进入build文件夹
cmake ..	
make		#编译项目

在执行cmake ..命令时可能会出现如下问题:
在这里插入图片描述
这是因为缺少了X11的开发库,执行如下命令安装相关库即可:

sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev

再次执行cmake ..命令时上述问题已解决,但可能又存在下面的问题:

在这里插入图片描述
缺少libxrandr开发包,执行如下命令安装libxrandr的开发包:

sudo apt-get install libxrandr-dev

在这里插入图片描述
安装libxinerama的开发包:

sudo apt-get install libxinerama-dev

在这里插入图片描述
安装libxcursor的开发包:

sudo apt-get install libxcursor-dev

此时再执行cmake ..命令不会报错了,然后执行make命令。
到这里,GLFW的源码已经编译完毕。

三、运行GLFW中的案例

源码编译完毕后build/examples文件夹中存放了一些案例:
在这里插入图片描述
绿色的文件即为可执行文件,通过如下命令执行:

./boing

执行效果如下:
在这里插入图片描述

四、使用编译好的GLFW库

对于编译好的GLFW库而言,有用的其实只有glfw3.h和libglfw3.a这两个文件分别位于:

glfw-3.3.8/include/GLFW/glfw3.h
glfw3.3.8/build/src/libglfw3.a

在项目中只需要正确指定这两个文件即可。
如果想省事的话可以在build文件夹下使用如下命令将glfw安装到usr/local目录下:

make install

项目会自动扫描/usr/local这个文件夹下的内容。

下面构建了一个最简单的GLFW项目其结构为:

|__build
|__CMakeLists.txt
|__main.cpp

main.cpp内容如下:

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

const int SCR_WIDTH = 720;
const int SCR_HEIGHT = 480;

int main(int argc, char** argv){
    glfwInit();
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Hello_OpenGL", nullptr, nullptr);
    if (window == NULL)
    {
        std::cerr << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window))
    {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.0)

project(HELLO_OPENGL)

#指定头文件和第三方库所在的文件夹,如果之前使用make install安装了glfw就不需要指定了
include_directories(/home/lotus/project/glfw-3.3.8/include)
link_directories(/home/lotus/project/glfw-3.3.8/build/src)

add_executable(main main.cpp)

target_link_libraries(main glfw3 X11)

在cuild文件夹下执行如下命令编译本项目:

cmake ..
make

可能会遇到下面这个错误:
在这里插入图片描述
原因是缺少了Gl库文件,执行下面的命令安装即可:

sudo apt-get install libgl-mesa-dev

再次编辑即可成功。
在这里插入图片描述
GLFW成功创建了窗口,由于没有进行图形渲染,所以只有一个黑窗口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值