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-web、emmake 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.0 | 2026-04 | 软件渲染后端 rlsw(无 GPU 可跑)、新示例管理器 rexm、骨骼动画重做 | 有 API 移除,细节以 CHANGELOG 为准 |
| 5.5 | 2024-11 | GPU 蒙皮、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),仅供参考