Compilando e instalando a Raylib no Linux
Sat Sep 14 2024 18:30:00 GMT+0000 (Coordinated Universal Time)
Na UBL estamos estudando C. O próximo passo será cada pessoa desenvolver um jogo utilizando a Raylib e resolvi documentar o processo no desenvolvimento da minha solução que pode vir a ser útil para outras pessoas.
Instalando a Biblioteca
Primeiramente temos que instalar a biblioteca em si e para isso existem duas formas:
- Instalar a versão compilada na sua distro.
- Compilar a biblioteca e instalar você mesmo.
A primeira opção é melhor para quem quer a forma mais simples de instalar. Porém, nem todas as distribuições possuem os binários pré-compilados. Na verdade apenas o Arch e algumas poucas distros possuem. Então, no meu caso e de muitos a única opção é a segunda.
Por sorte, existe um tutorial do passo a a passo em inglês sobre como fazer o processo de compilação e instalação manual da biblioteca em Arch, Fedora e Ubuntu/Debian.
Como atualmente estou usando Debian, vou fazer o passo a passo nessa distro que vocês podem acompanhar e reproduzir.
Instalando as dependências necessárias
O primeiro passo é instalar as dependências necessárias, para isso usamos o aptitude (apt):
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev
Aqui é importante verificar se todas as bibliotecas necessárias foram instaladas com sucesso, em caso de erro pode acabar que fique faltando uma delas o que vai causar erros de compilação no próximo passo.
Clonando o repositório e compilando
Agora o próximo passo é clonar o repositório do GitHub.
$ git clone git@github.com:raysan5/raylib.git
E então acessar a pasta com o código clonado:
$ cd raylib
Dentro dela segundo a documentação vamos rodar o comando de build para compilar o código:
mkdir build && cd build
Eu tive erros relacionados a mais duas bibliotecas que estavam faltando no meu Debian, no caso eu precisava instalar também as seguintes libs:
$ sudo apt install -y libwayland-dev libxkbcommon-dev
Que não estão presentes na minha instalação de Debian porque eu não uso o Gnome, mas o Awesome.
Depois de fazer o build, o próximo passo é rodar o CMake:
$ cmake -DBUILD_SHARED_LIBS=ON ..
A documentação diz que para rodar make up
nessa etapa, mas quando tentei rodar o make retornou que não tem esse comando, olhando o arquivo realmente não há essa regra do Make, então não fez qualquer diferença.
O próximo passo é instalar a biblioteca:
$ sudo make install
E por fim vamos copiar a biblioteca para /usr/lib/
para que fique disponível de forma global.
$ sudo cp /usr/local/lib/libraylib.so.550 /usr/lib
A terminação
.550
é a da versão atual que compilei, provavelmente se estiver seguindo esse tutorial algum tempo depois é importante checar qual o nome da biblioteca no seu sistema comls /usr/local/lib | grep libraylib
.
Criando um projeto de Exemplo
Agora que temos a Raylib instalada, vamos fazer um projeto de exemplo para testar a nossa instalação. Para isso vamos fazer um "Hello, Wolrd!" do mundo dos gráficos que é o projeto do triângulo.
1. Estrutura do Projeto
Primeiro, vamos criar a estrutura de pastas do projeto:
$ mkdir projeto-raylib
$ cd projeto-raylib
$ mkdir include src
No final você deve ter a seguinte estrutura:
.
├── include
└── src
3 directories, 0 files
2. Download do Arquivo de Cabeçalho Raylib
Agora, vamos baixar o arquivo de cabeçalho (header) raylib.h
diretamente do repositório oficial do Raylib:
$ cd include
$ curl -O https://raw.githubusercontent.com/raysan5/raylib/master/src/raylib.h
$ cd ..
Este comando baixa o arquivo raylib.h
e o coloca na pasta include
do nosso projeto.
3. Makefile
Crie um arquivo Makefile
na raiz do projeto:
touch Makefile
Adicione o seguinte conteúdo ao Makefile
:
CC = gcc
CFLAGS = -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces
INCLUDES = -I include/ -I /usr/local/include
LDFLAGS = -L/usr/local/lib -lraylib -lm -lpthread -ldl -lrt -lX11
SRCDIR = src
OBJDIR = obj
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
TARGET = triangle
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
.PHONY: clean
clean:
rm -rf $(OBJDIR) $(TARGET)
4. Código
Agora vamos adicionar o código da nossa alicação, crie um arquivo main.c
na pasta src
:
touch src/main.c
Abra src/main.c
e adicione o seguinte código:
#include "raylib.h"
#include <stdio.h>
int main(void) {
const int screenWidth = 800;
const int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "Teste de Renderização Raylib");
SetTargetFPS(60);
printf("Janela inicializada. Largura: %d, Altura: %d\n", screenWidth,
screenHeight);
while (!WindowShouldClose()) {
BeginDrawing();
ClearBackground(RAYWHITE);
DrawLine(400, 130, 270, 300, RED);
DrawLine(270, 300, 530, 300, GREEN);
DrawLine(530, 300, 400, 130, BLUE);
DrawText("Se você está lendo isso a RayLib Funciona!", 220, 410, 20,
DARKGRAY);
EndDrawing();
}
CloseWindow();
return 0;
}
5. Compilar e executar
Agora vamos para a hora da verdade e vamos compilar e executar a aplicação.
Para compilar executamos o comando:
$ make
E isso deve gerar o arquivo EFI "triangle" na raíz do nosso diretório, para executá-lo usamos:
$ ./triangle
ou
$ ./triangle > /dev/null 2>&1 &
E se tudo der certo você deve ver:
E se estiver vendo isso você conseguiu compilar, instalar e executar um projeto com a Raylib.
Está pronto para começar a desenvolver projetos com ela!
Tornando isso um Template para o ínicio rápido de projetos
Agora que temos uma estrutura básica, podemos transformar isso em um template para começar novos projetos já com algumas configurações prontas sem precisar repetir esse processo.
Você pode clonar ou criar um novo repositório com esse projeto que desenvolvemos aqui.
Aprendendo a usar a Raylib
Agora que temos tudo instalado, um projeto funcional e um quickstart basta aprender a usar a Raylib e começar a fazer projetos interessantes e jogos utilizando a biblioteca.
Para isso fica as recomendações: Raylib Cheatsheet Raylib Examples Jogos Raylib Simulações Raylib
E bora fazer jogos em C com Raylib!