news 2026/9/13 22:59:11

raylib 安装到发布:2 个文件出独立可执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
raylib 安装到发布:2 个文件出独立可执行

raylib 安装到发布:2 个文件出独立可执行

【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib

这是一份直奔可发布产物的实操指南:三条安装路径挑一条,raylib CMake 配置只写 2 个文件,就能拿到拷到别的机器直接跑的独立可执行文件。全文的 demo 窗口都来自仓库里的现成示例。

5 分钟弹出窗口:raylib 安装路径怎么挑

先 clone,三条路径的验证示例都从这里跑。仓库 examples/ 示例目录里有上百个样例,你只需要最简单的一个:core_basic_window。

对号入座:只想看 demo → 包管理器;要改源码、翻 CMake 开关 → 源码编译;直接开新项目要发布 → 官方模板。模板在 projects/CMake/ 里,会自动拉取并编译 raylib,本地没装也能跑。

# 克隆仓库,验证示例都从这来 git clone https://gitcode.com/GitHub_Trending/ra/raylib cd raylib # 包管理器装,按系统三选一 brew install raylib # macOS choco install raylib # Windows sudo apt install libraylib-dev # Ubuntu / Debian # 直接编译仓库里最简单的示例,窗口弹出即通过 gcc examples/core/core_basic_window.c -o demo -lraylib && ./demo

跑完应弹出一个写着 "Congrats! You created your first window!" 的窗口,这就是通过线。三条路径的耗时:包管理器路径 5 分钟级;源码编译路径 15 分钟级(含编译);模板路径 10 分钟级。

源码已经在手的话,也可以跳过包管理器直接编:

cmake -B build # 配置,示例默认一起编 cmake --build build -j4 # 编译 ./build/examples/core/core_basic_window # 窗口弹出即通过

编完跑最后那条命令,弹出同一个窗口就对了。

raylib 装完为什么不用装别的依赖

根子在仓库把依赖自己打包了。所有第三方库——GLFW、glad、stb、miniaudio——都摆在 src/external/ 里,所以编译完你在系统层面不需要再装任何外部依赖,这也是安装一节只有几条命令的原因。

依赖自带动还有一个好处:raylib 更新时依赖跟着源码一起换,版本冲突基本不会出现。raylib 跨平台编译的成本因此很低,多数情况只换 PLATFORM 开关,源码本身不动。你写的代码只会碰到三类模块:

  • rlgl.h:封装 OpenGL,所有 2D/3D 绘制从这走
  • raymath.h:向量、矩阵、四元数,3D 场景必备
  • rcore:建窗口、收键盘鼠标手柄事件,屏蔽各平台差异

2 个文件出发布包:raylib CMake 配置 + 静态链接

最小可发布项目就是两个文件:一份 CMakeLists.txt 加一份 main.c。发布的关键在 raylib 静态链接,CMake 侧只多一行。

# 最小骨架:CMakeLists.txt cmake_minimum_required(VERSION 3.11) project(tinydemo) find_package(raylib REQUIRED) # 找装好的 raylib add_executable(tinydemo main.c) target_link_libraries(tinydemo raylib) # raylib 默认静态链接 # Linux 下把标准库也链进去,产出独立可执行文件 set_target_properties(tinydemo PROPERTIES LINK_FLAGS "-static")

两个文件放同一目录,cmake -B build && cmake --build build,build/ 里出现独立的 tinydemo 可执行文件就算成功。

C 文件是初始化、循环、收尾三段式,这就是一个完整的 raylib 最小可运行示例:

#include <raylib.h> // 引入头文件 int main(void) { InitWindow(800, 450, "tinydemo"); // 开窗口 while (!WindowShouldClose()) // ESC 或关闭按钮退出 { BeginDrawing(); // 开始一帧 ClearBackground(BLUE); // 清背景 DrawText("hi", 340, 200, 20, WHITE); // 画文字 EndDrawing(); // 提交这一帧 } CloseWindow(); // 释放资源 return 0; }

gcc main.c -o tinydemo -lraylib编出来,弹出的窗口和示例一致即通过。

两件事说清楚:

  • 静态链接:raylib 默认产出静态库,上面那行 LINK_FLAGS "-static" 再把标准库链进去,因为产物是单个文件,拷到别的机器直接跑不报错
  • Web 版:代码一行不改,换两条命令emcmake cmake -B build-webemmake cmake --build build-web -j4,产物是 .html,丢到任意静态托管就能玩

💡 提示:配置时加-DCUSTOMIZE_BUILD=ON,会多出 USE_AUDIO 这类模块开关,关掉用不到的模块能明显缩小产物体积。

窗口不弹、没声音:先查这张表

遇到 raylib 窗口不弹出别慌,九成卡点就是表里这几种,先对表再翻源码。

长什么样多半是啥原因先跑这条补一句
raylib.h: No such file头文件路径没进搜索范围pkg-config --cflags raylib查到的路径作 -I、-L 用
窗口弹出但黑屏OpenGL 版本太低glxinfo \| grep "OpenGL version"只支持 2.1 就加-DOPENGL_VERSION=2.1
有画面没声音缺音频后端开发库装音频开发库后重新编译真机过一遍再下结论
GL 符号未定义手工 gcc 漏链系统库链接行补-lGL -lpthread -ldl走 CMake 基本遇不到

两条补充:黑屏和没声音都属于系统环境问题,没有音频设备的 Linux 服务器上装库也没声,音频要真机验证;GL 符号那行是手工 gcc 专属,CMake 会替你解析系统库,所以遇不到。

6.0 还是 5.5:版本别纠结

只盯着最近两个大版本。

版本发布时间主要加了什么升级要留意的
6.02026-04软件渲染后端 rlsw(无 GPU 可跑)、新示例管理器 rexm、骨骼动画重做有 API 移除,细节以 CHANGELOG 为准
5.52024-11GPU 蒙皮、RGFW/SDL3 后端、新增主机平台GetMouseRay改名为GetScreenToWorldRay

新项目直接上 6.0,留在 5.5 的唯一理由是依赖旧 API 行为。

⚠️ 从 5.5 升 6.0 之前,把CHANGELOG翻一遍,API 有移除和改名,全局搜一下旧名字批量替换即可。

窗口弹起来之后去哪:按 core → shapes → models 顺序跑示例

别停在窗口这一步。打开 examples/ 示例目录,按 core → shapes → models 的顺序挑着跑:core 里看相机和输入,shapes 里画 2D,models 里摸 3D,每编一个就运行看效果,比读文档快。想发布时,回到第 3 节的两文件骨架,换掉 main.c 就是你的产品。

【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 22:55:31

10-05-高级-模式匹配-CSharp如何改变与数据结构的交互方式

模式匹配源码级剖析&#xff1a;C# 如何改变与数据结构的交互方式系列&#xff1a;C# 与常用数据结构源码剖析 高级特性实现原理篇 阅读时间&#xff1a;约 55 分钟 版本边界&#xff1a;主线以 C# 7—12 与 .NET 8 为例&#xff1b;Unity 中是否可用取决于 Editor 版本、脚本…

作者头像 李华
网站建设 2026/9/13 22:51:39

备忘录模式在工作流草稿箱与状态回退中的实现

备忘录模式在工作流草稿箱与状态回退中的实现做政企协同办公或复杂审批流系统时&#xff0c;用户经常在表单填写一半时临时退出&#xff0c;或者在多步驳回、撤销操作时要求“一键还原到上一步编辑状态”。很多团队初期的做法简单粗暴&#xff1a;前端本地存 localStorage&…

作者头像 李华