環境
- macOS: 10.15.4 (Catalina)
- clang: Apple clang version 11.0.3 (clang-1103.0.32.59)
- SDL: 2.0.12
- SDL_image: 2.0.5
- SDL_ttf: 2.0.15
SDL 本体
SDL は本体と SDL_Image や SDL_ttf といった周辺ライブラリが分離されていて、必要なライブラリだけインストールできるようになっています。まずは SDL 本体から。
インストール方法
インストールには二種類あって、ドキュメントでいう "the Unix way" と "SDL.framework" があるのですが、これは Unix Way の記事です。
自分の環境では、SDL の 公式ドキュメント の通りでインストールできました。まず SDL を ダウンロード して、適当な場所に解凍したあと、
$ mkdir build $ cd build $ ../configure $ make $ sudo make install
で完了です。なにかエラーになったら make clean
してみるとうまくいくことがあります。gcc-fat.sh
を使う方法は Catalina ではうまくいきませんでした。gcc-fat.sh
を使わないと古い Mac で動かないという話がドキュメントに記載されているため気になる…
動作確認
コンパイル時に必要となるフラグですが、 sdl-config
というコマンドが同梱されていて、このコマンドで調べることができます。便利。ビルド時に作った build ディレクトリで、
$ ./sdl2-config --cflags --libs -I/usr/local/include/SDL2 -I/opt/X11/include -D_THREAD_SAFE -L/usr/local/lib -lSDL2
です。
試しにサンプルコードをコンパイルしてみます。
// Example program: // Using SDL2 to create an application window #include "SDL.h" #include <stdio.h> int main(int argc, char* argv[]) { // Show SDL Version SDL_version compiled; SDL_version linked; SDL_VERSION(&compiled); SDL_GetVersion(&linked); printf("We compiled against SDL version %d.%d.%d ...\n", compiled.major, compiled.minor, compiled.patch); printf("But we are linking against SDL version %d.%d.%d.\n", linked.major, linked.minor, linked.patch); SDL_Window *window; // Declare a pointer SDL_Init(SDL_INIT_VIDEO); // Initialize SDL2 // Create an application window with the following settings: window = SDL_CreateWindow( "An SDL2 window", // window title SDL_WINDOWPOS_UNDEFINED, // initial x position SDL_WINDOWPOS_UNDEFINED, // initial y position 640, // width, in pixels 480, // height, in pixels SDL_WINDOW_OPENGL // flags - see below ); // Check that the window was successfully created if (window == NULL) { // In the case that the window could not be made... printf("Could not create window: %s\n", SDL_GetError()); return 1; } // The window is open: could enter program loop here (see SDL_PollEvent()) SDL_Delay(3000); // Pause execution for 3000 milliseconds, for example // Close and destroy the window SDL_DestroyWindow(window); // Clean up SDL_Quit(); return 0; }
main.c
というファイル名で保存して、 sdl-config
で調べたオプションを追加し、
$ gcc -I/usr/local/include/SDL2 -I/opt/X11/include -D_THREAD_SAFE -L/usr/local/lib -lSDL2 main.c
でコンパイルできます。実行すると、SDL のバージョンが出力されると思います。その後ウィンドウが作られ、3秒後に終了します。
$ ./a.out We compiled against SDL version 2.0.12 ... But we are linking against SDL version 2.0.12.
SDL_image
画像を扱うときに使うライブラリです。こちらも 公式ドキュメント そのままにインストールすることができました。
SDL2_image-2.0.5.zip
を DL して適当な場所に解凍し、
$ ./configure $ make $ sudo make install
でオーケーです。
SDL_ttf
SDL でフォントを扱うライブラリです。こちらはインストールに freetype が必要なので事前に homebrew でインストールしておきます。
$ brew install freetype
それ以外は 公式ドキュメント 通りでインストールできました。すなわち、 SDL2_ttf-2.0.15.zip
を適当な場所に解答して、
$ ./configure $ make $ sudo make install
でオーケーです。