ubuntu中下载、构建、使用raylib

目录

  • 先决条件 [1]
  • 下载raylib
    • 方式一
    • 方式二
  • 构建 [1]
  • 使用
    • 终端中使用
    • Clion中使用

先决条件 [1]

ubuntu系统上需要先安装GCC, make(或者cmake)和git (下载raylib)
执行下面的命令可以安装GCC,make,cmake,git

sudo apt install build-essential git #build-essential是一套工具集,包括GCC和make
sudo apt install cmake

一些额外的工具,可以不用管这些是什么,直接复制脚本执行安装

sudo apt install libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev

下载raylib

方式一

通过git下载

git clone https://github.com/raysan5/raylib.git raylib #将克隆的raylib源文件放到raylib目录下

方式二

如果你的系统是桌面版的,可以访问网址 raylib github源码,按下图点击code,选择Download ZIP下载源码。用解压工具将zip文件解压,解压后的文件重命名为raylib。这种方式和第一种没有本质区别,一个是在终端上操作,另一个是图形界面下操作。
raylib github下载

构建 [1]

这里介绍的是使用cmake构建raylib。

cd raylib #进入存放源文件的raylib目录
mkdir build && cd build #创建build目录并进入该目录
cmake -DBUILD_SHARED_LIBS=ON .. #构建项目,选项BUILD_SHARED_LIBS=ON表示构建共享库, ..表示上一级目录
make	
sudo make install #将项目安装到ubuntu系统中,一般.h文件被放到/usr/local/include目录下,.so文件被放到/usr/local/lib目录下。

使用

终端中使用

新建一个.c源文件,这里以main.c为例,main.c的文件内容如下[2]

#include "raylib.h" //包含raylib库的头文件int main(void)
{InitWindow(800, 450, "raylib [core] example - basic window");//调用raylib库的InitWindow函数while (!WindowShouldClose())//调用raylib库的WindowShouldClose函数{BeginDrawing();//调用raylib库的BeginDrawing函数ClearBackground(RAYWHITE);//调用raylib库的ClearBackground函数DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);//调用raylib库的DrawText函数EndDrawing();//调用raylib库的EndDrawing函数}CloseWindow();//调用raylib库的CloseWindow函数return 0;
}

在终端中调用下面的命令产生main可执行文件

gcc main.c -L/usr/local/lib -lraylib -o main
#-L选项指定链接路径(link path), -l选项指定链接文件名, gcc会在文件名加上前缀lib、后缀.so, 所以文件名最终为libraylib.so。

执行可执行文件main获得程序运行结果

./main

下面是main.c执行后生成的图形界面,其标题为InitWindow函数第三个参数的值,内容为DrawText函数第一个参数的值
main

Clion中使用

在clion中可以使用cmake配置raylib所在库的位置。在与main.c同级目录的CMakeLists.txt文件中加入以下代码[3]

cmake_minimum_required(VERSION 3.24)set(CMAKE_C_STANDARD 11)project(main C)#前面的内容可以不用关注,从这里开始
set(INCLUDE_DIR /usr/local/include) #定义INCLUDE_DIR变量,该变量保存include路径set(LIBRARY_DIR /usr/local/lib)	#定义LIBRARY_DIR 变量,该变量保存lib路径include_directories(${INCLUDE_DIR})	#加载include路径link_directories(${LIBRARY_DIR})	#加载lib路径add_executable(main main.c) 	#编译main.ctarget_link_libraries (main libraylib.so ) #链接libraylib.so到编译后的main中

编译运行得到同样的结果。

下面是参考文章
[1]https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux
[2]https://github.com/raysan5/raylib/tree/master#basic-example
[3]https://blog.csdn.net/why2214/article/details/127264619

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29180.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 445. Add Two Numbers II(两数相加)

用链表代表2个数字,这2个数字相加的和用链表返回。 最高位在链表的head. 思路: 1.链表逆序 数字相加是从低位到高位的,然而链表中的数字是从高位指向低位。 所以涉及到链表的逆序。 逆序之后只需从head到tail把两个链表的数字相加&#x…

Windows安装激活注意事项

选择语言、版本(Windows 10指的是专业版本)和体系结构(32位/64位),这里自行根据情况选择(如果机器预装的是Windows 10家庭中文版则选择家庭中文版,如果预装的是专业版则选择Windows 10。这样原先…

使用IDEA构建jar然后转执行程序exe的爬坑

https://download.csdn.net/download/leoysq/87939492 构建jar

划片机的作用将晶圆分割成独立的芯片

划片机是将晶圆分割成独立芯片的关键设备之一。在半导体制造过程中,晶圆划片机用于将整个晶圆切割成单个的芯片,这个过程被称为“晶圆分割”或“晶圆切割”。 晶圆划片机通常采用精密的机械传动系统、高精度的切割刀具和先进的控制系统,以确保…

018 - STM32学习笔记 - SPI读写FLASH(三)- 写入字符串、小数与整数

018 - STM32学习笔记 - SPI访问Flash(三)- 写入字符串、小数与整数 上节对Flash的跨页写入数据进行了完善,但是数据写入都是以Byte数组的方式进行写入,这节分别进行字符串的写入和小数整数的写入,本节内容对SPI的函数…

Storage、正则表达式

1 LocalStorage 2 SessionStorage 3 正则表达式的使用 4 正则表达式常见规则 5 正则练习-歌词解析 6 正则练习-日期格式化 Storage-Storage的基本操作 // storage基本使用// 1.token的操作let token localStorage.getItem("token")if (!token) {console.log(&q…

Spring的创建和使用

目录 Spring的创建1.创建一个普通的Maven项目2.添加spring框架支持3.添加启动类 存储Bean对象1. 创建Bean2.将Bean注册到容器当中 获取并使用Bean对象1.得到Spring上下文2. 获取指定Bean对象3. 使用Bean对象 总结 Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下…

CloudCompare——M3C2计算两点云之间的鲁棒距离

目录 1.概述2、计算原理3、操作流程 本文由CSDN点云侠原创,原文链接。爬虫网站请自重。 M3C2 (plugin) 1.概述 CloudCompare中的Plugins -> M3C2 Distance 功能是用来计算两组点云间的鲁棒距离的特别方法。从CloudCompare-2.9版开始,M3C2插件还包括…

隐私计算大会亮点前瞻:《隐私计算应用研究报告(2023年)》发布预告

7月26日,2023隐私计算大会将于青岛正式扬帆,本次大会将齐聚业内专家大咖共论行业最新进展,洞察未来发展趋势,共同推进隐私计算行业蓬勃发展。 本次大会将公开正式发布《隐私计算应用研究报告(2023)》、“隐…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

阿里云RockMQ与SpringBoot的整合

前言&#xff1a; 开源版本Rocket和商业版本的RocketMQ有些不同&#xff0c;研究的是商业版本的RocketMQ&#xff0c;阿里云的官方文档&#xff0c;感觉有点乱。看不咋明白&#xff0c;网上虽然有教程&#xff0c;大都还是有点缺少&#xff0c;有时候会突然跳了步骤&#xff0c…

Java 设计模式——观察者模式

目录 1.概述2.结构3.案例实现3.1.抽象观察者3.2.观察对象3.3.具体观察者3.4.具体观察对象3.5.测试 4.优缺点5.使用场景6.JDK 源码解析——Observable / Observer6.1.Observable 类6.2.Observer 接口6.3.案例 1.概述 观察者模式 (Observer Pattern) 是一种行为型设计模式&#…