Compilando e instalando a Raylib no Linux

alt

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:

  1. Instalar a versão compilada na sua distro.
  2. 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 com ls /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:

alt

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.

alt

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!