続々・MacOSX LionでSDL 解決編
お詫び
今までの2つの記事で使ってたテストプログラムにミスがありました
どうりで動かないわけだ・・・
んで、セットアップ手順を再度まとめ直します。
SDLのインストール
公式サイトからソースをダウンロード
http://www.libsdl.org/
テキトーなディレクトリに展開してビルド
このとき、configureのオプションとして--disable-assemblyをつける
参考:
http://stackoverflow.com/questions/8136857/libsdl-cmake-and-mac-os-x-lion
$ tar zxvf SDL-1.2.15.tar.gz
$ cd SDL-1.2.15
$ ./configure --disable-assembly
$ make
# make install
動作確認のためにテストプログラムをビルドしてテキトーに一つ実行してみる
$ cd test
$ ./configure --disable-assenbly
$ make
$ ./checkkeys
動作することを確認
SDLのサンプル
試しに画面を作るだけのプログラムを組んで実行してみる。
参考:
http://ro119.com/archive/tokyo.cool.ne.jp/sdl/
/** * show_window.cpp */ #include <SDL/SDL.h> #include <iostream> #include <string> SDL_Surface* screen; 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; // set caption of window SDL_WM_SetCaption( SCREEN_CAPTION.c_str(), NULL ); // initialize window screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE // | SDL_FULLSCREEN ); // vanish mouce cursor // SDL_ShowCursor(SDL_DISABLE); return true; } bool finalize() { // finalize SDL SDL_Quit(); } // polling event and execute actions bool pollingEvent() { SDL_Event ev; SDLKey *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; }
コンパイルと実行
ちなみにsdl-configはSDLに関する情報を取得するために用意されているスクリプトで、以下のコマンドではCFALGSとLDFLAGSを取得してきてる
$ g++ show_window.cpp -g `sdl-config --cflags` `sdl-config --libs`
$ ./a.out
抜けるときはESCキーか閉じるボタンをクリックで
その他のSDLライブラリ
これはconfigureに--disable-assemblyをつければ以前紹介した方法
http://d.hatena.ne.jp/yano-htn/20120218/1329553181
でいけるかと思うので省略