terça-feira, 29 de abril de 2014

Configurando SDL2 no Code::Blocks 13

Infelizmente minhas férias com o Arduino não foram como o esperado. Não tive muito tempo para dedicar, então, não saí do básico. Desta forma, os posts sobre o assunto ficarão pra outra hora. Hoje vou mostrar mais uma vez um post sobre setup do ambiente mais legal que existe, o Code::Blocks 13.12 para se trabalhar com a biblioteca SDL versão 2.0.3.

Logo SDL - libsdl.org


Simple DirectMedia ou SDL, é uma biblioteca escrita em linguagem C e projetada para servir como interface em baixo nível com hardware gráfico, OpenGL ou Direct3D, mouse, teclado, joystick e áudio. É bastante utilizada em desenvolvimento de jogos para várias plataformas. SDL suporta os sistemas operacionais Linux, Mac OS X e Windows, além de Android e iOS. Mesmo escrita em C, funciona nativamente com C++, C#, Python entre outras linguagens e possui licença zlib que permite que você utilize livremente em qualquer software.

O Code::Blocks é um ambiente de desenvolvimento para C/C++ do qual já falamos bastante por aqui, pra quem não conhece, acesse: http://www.codeblocks.org/ e baixe a última versão. Até a escrita deste post a versão mais atual era a 13.12, que utilizaremos para a configuração.

Vamos lá, para começar, baixe os arquivos da SDL no site http://www.libsdl.org/download-2.0.php. Até a escrita deste post, a última versão era a 2.0.3, como na imagem abaixo. Estou utilizando o sistema operacional Windows.

Local do link para download

Logo após o download, descompacte-o e copie os arquivos para as pastas da instalação do MingW ou mantenha como path relativo, se achar melhor. Estou utilizando o sistema operacional Windows 32 bits, então devo utilizar os arquivos que estão na pasta i686-w64-mingw32. Se o seu sistema for 64 bits, escolha a outra pasta, x86...

Pasta dos arquivos da biblioteca para Windows 32 bits

No meu caso, vou copiar os arquivos para a pasta do MingW, lembrando que esta talvez não seja a melhor opção dependendo do seu caso. Para fazer o mesmo, copie os arquivos das respectivas pastas da SDL para as pastas do MingW na instalação do Code::Blocks.

Pasta bin para a pasta bin, include para a include, lib pra lib e share para share. Fácil não é? Na pasta include da SDL existe uma pasta SDL2. Copie a pasta inteira para include. Ainda tem mais uma coisa. Até o dia deste post, existia um bug em um dos arquivos da SDL para o Windows. O bug esta no arquivo SDL_platform.h e pra corrigir, precisamos substituir este arquivo na pasta include. Encontrei esta informação no Stack Overflow que foi respondida pelo senhor David Ludwig. O link para baixar o arquivo com a correção é este: https://www.dropbox.com/s/dm5lto9qlyfc418/SDL_platform.h. Basta substituir o arquivo anterior por este e tudo estará funcionando.

Agora vamos configurar o ambiente no Code::Blocks. Com o Code::Blocks aberto, crie um novo projeto Empty project como na imagem abaixo:



Insira um novo arquivo no projeto com o código para testarmos:

#include <stdio.h>
#include "SDL2/SDL.h"

int main(int argc, char ** argv)
{
    int quit = 0;
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window * window = SDL_CreateWindow("SDL2 Hello Window",
        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);

    while (!quit)
    {
        SDL_WaitEvent(&event);

        switch (event.type)
        {
        case SDL_QUIT:
            quit = 1;
            break;
        }
    }

    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

No Code::Blocks, vá em "Project->Build Options...". Na janela Build Options, clique no nó raiz da árvore para que a configuração seja feita tanto para Release quanto para Debug. Clique na aba "Linker settings" e coloque no campo "Other linker options" o seguinte texto, sem aspas: "-lmingw32 -lSDL2main -lSDL2" para linkar a biblioteca ao projeto. Se você optou por copiar os arquivos da biblioteca para as pastas do MingW, isto irá funcionar. Caso não tenha copiado os arquivos para as pastas do MingW, terá que informar a localização da biblioteca na aba "Search directories" colocando os caminhos de include para "Compiler" e a pasta lib para "Linker". Atenção, apenas se não tiver optado por copiar os arquivos para as pastas do MingW.

Janela "Project build options" do Code::Blocks - Configuração do Linker.

Pronto. Se tudo estiver dado certo, você deverá compilar o código sem nenhum problema. Qualquer dúvida, deixe um comentário e até o próximo post.

Abraços.

Breno.
Compartilhe:

2 comentários:

Fernando disse...
Este comentário foi removido pelo autor.
Unknown disse...
Este comentário foi removido pelo autor.
QuaseHard. Tecnologia do Blogger.