iizukakの作業ログ

忘れる前にメモしよう

macOS への SDL 2 のインストール方法

環境

SDL 本体

SDL は本体と SDL_Image や SDL_ttf といった周辺ライブラリが分離されていて、必要なライブラリだけインストールできるようになっています。まずは SDL 本体から。

インストール方法

インストールには二種類あって、ドキュメントでいう "the Unix way" と "SDL.framework" があるのですが、これは Unix Way の記事です。

自分の環境では、SDL公式ドキュメント の通りでインストールできました。まず SDLダウンロード して、適当な場所に解凍したあと、

$ mkdir build
$ cd build
$ CC=../build-scripts/gcc-fat.sh ../configure
$ make
$ sudo make install

で完了です。

動作確認

コンパイル時に必要となるフラグですが、 sdl-config というコマンドが同梱されていて、このコマンドで調べることができます。便利。ビルド時に作った build ディレクトリで、

$ ./sdl2-config --cflags --libs
-I/usr/local/include/SDL2 -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 -D_THREAD_SAFE -L/usr/local/lib -lSDL2 main.c

コンパイルできます。実行すると、SDL のバージョンが出力されると思います。その後ウィンドウが作られ、3秒後に終了します。

$ ./a.out 
We compiled against SDL version 2.0.8 ...
But we are linking against SDL version 2.0.8.

SDL_image

画像を扱うときに使うライブラリです。こちらも 公式ドキュメント そのままにインストールすることができました。

SDL2_image-2.0.3.zip を DL して適当な場所に解凍し、

$ ./configure
$ make
$ sudo make install

でオーケーです。

SDL_ttf

SDL でフォントを扱うライブラリです。こちらはインストールに freetype が必要なので事前に homebrew でインストールしておきます。

$ brew install freetype

それ以外は 公式ドキュメント 通りでインストールできました。すなわち、 SDL2_ttf-2.0.14.zip を適当な場所に解答して、

$ ./configure
$ make
$ sudo make install

でオーケーです。