SDL2.0をインストールする

最新版のSDLをインストールする

せっかくなので最新版を使うことにしたのでメモ

SDL

リポジトリから最新版を取得

$ hg clone http://hg.libsdl.org/SDL

チェックアウトしたディレクトでビルドしようとするとエラーになるので、
別にディレクトリを作ってそこでビルドする

$ mkdir build_SDL
$ cd build_SDL
$ ../SDL/configure
$ make
# make install

以前書いたテストプログラムがそのままだと動かなかったので修正

多分他にもいろいろ違うみたいだけど、前書いたテストプログラムでの修正箇所はその2ヶ所ぐらいっぽい

#include <SDL.h>

#include <iostream>
#include <string>

SDL_Window* window;
static const std::string SCREEN_CAPTION = "SDL window test";
static const int SCREEN_WIDTH = 640;
static const int SCREEN_HEIGHT = 640;
static const int SCREEN_BPP = 32;

bool init();
bool finalize();
bool pollingEvent();

int main(int argc, char* argv[]) {
  // initialize
  if (!init()) {
    std::cerr << "ERROR: failed to initialize SDL" << std::endl;
    exit(1);
  }

  // main loop
  while (true) {
    if (!pollingEvent()) break;
  }

  // finalize
  finalize();
  
  return 0;
}


bool init() {
  // initialize SDL
  if( SDL_Init(SDL_INIT_VIDEO) < 0 ) return false;

  // create indow
  window = SDL_CreateWindow(SCREEN_CAPTION.c_str(),
                            SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                            640, 480, 0);
  if (!window) return false;

  return true;
}

bool finalize() {
  // finalize SDL
  SDL_Quit();
}


// polling event and execute actions
bool pollingEvent()
{
  SDL_Event ev;
  SDL_Keycode key;
  while ( SDL_PollEvent(&ev) )
    {
      switch(ev.type){
      case SDL_QUIT:
        // raise when exit event is occur
        return false;
        break;
      case SDL_KEYDOWN:
        // raise when key down
        {
          key=ev.key.keysym.sym;
          // ESC
          if(key==27){
            return false;
          }
        }
        break;
      }
    }
  return true;
}

コンパイル方法は以下の通り

g++ -g -o show_window_for_sdl2 show_window_for_sdl2.cpp `sdl2-config --cflags` `sdl2-config --libs`

結果は前のと同じなので省略

SDL_image

$ hg clone http://hg.libsdl.org/SDL_image/
$ mkdir build_SDL_image
$ cd build_SDL_image
$ ../SDL_image/configure
$ make
# make install

SDL_mixer

$ hg clone http://hg.libsdl.org/SDL_mixer/
$ mkdir build_SDL_mixer
$ cd build_SDL_mixer
$ ../SDL_mixer/configure
$ make
# make install

SDL_sound

SDL2に対応してないのと、SDL_mixerでなんとかなりそうな気がしたので省略

SDL_gfx

どうせOpenGL使うので省略