Mac Home brewでSDL2.0を簡単に環境設定
2020.06.24
この記事は最終更新日から1年以上が経過しています。
どもです。
そろそろ、Ubuntuで、SDL2.0開発でも始めようかと思いきや(この時代にですがw)、
そもそもMacでも開発出来るではないか!
完全に思い込んでいました。
しかも、Home Brewでサクッとインストール出来るではないか!?
となれば、Macでサクッと環境設定し、開発でもと。
とはいえ、先日のWWDC 2020では、ARM Macに移行するって言うもんだから、色々とどうなるんだろう感が半端ない今日この頃です。
まぁ、BootCampは無くなるだろうし、構想していたMacMini + eGPU構成も夢のまま終わりそうです。
(今買うのも微妙だし、ARMになると、eGPU無くなりそうだし)
と言う、モヤモヤは一旦置いといて、
バージョン
- Mac OS 10.14.5
- Homebrew 2.4.1
- Apple clang version 11.0.0
環境構築
Home Brewでサクッと、SDL2.0をインストールする場合は、以下のコマンドで。
$ brew install sdl2
諸々のライブラリをインストールする場合は以下のコマンドでインストール。
$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer sdl2_gfx sdl2_net
各ライブラリの概要は以下の通り
- sdl2_image 画像を扱うライブラリ
- sdl2_ttf フォントを扱うライブラリ
- sdl2_mixer サウンドミキシングライブラリ
- sdl2_gfx 線分、四角、円、多角形の描画等を持つグラフィックライブラリ
- sdl2_net ネットワークライブラリ
こちらのSDLのwikiでは、ビルドするやり方ですが、brewでサクッとインストールしちゃいました。
コンパイルを行う際のコマンドは以下となります。
$ gcc main.c `sdl2-config --cflags --libs`
それでは、早速、ウィンドウを立ち上げるソースを作ります。
#include "SDL.h" #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Window *window = SDL_CreateWindow( "SDL2 window title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL ); if (window == NULL) { printf("Could not create window: %s\n", SDL_GetError()); return 1; } SDL_Event event; while(SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { SDL_DestroyWindow(window); SDL_Quit(); return 0; } } SDL_Delay(5000); SDL_DestroyWindow(window); SDL_Quit(); return 0; }
上記のソースを以下のコマンドで、コンパイル
$ gcc main.c `sdl2-config --cflags --libs`
main.outのファイルが生成されているかと思いますので、実行します。
$ ./main
すると、ウィンドウが立ちがりました!
ソース概要
ざっとだけ解説を。
SDL_CreateWindowで、ウィンドウを生成しております。
SDL_Window *window = SDL_CreateWindow( "SDL2 window title", // ウィンドウのタイトル SDL_WINDOWPOS_UNDEFINED, // ウィンドウのX座標の初期値 SDL_WINDOWPOS_UNDEFINED, // ウィンドウのY座標の初期値 640, // ウィンドウの幅 480, // ウィンドウの高さ SDL_WINDOW_OPENGL // 0 または 1のフラグ );
ちょっとハマったのが、問題なく実行されているが、ウィンドウが表示しない現象に陥った事。
どうやら、以下のループが無いと、ウィンドウが表示しないみたいなので、追記しました。
SDL_Event event; while(SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { SDL_DestroyWindow(window); SDL_Quit(); return 0; } }
C++のファイルでも、以下の g++ コマンドでコンパイル出来ました。
$ g++ main.cpp `sdl2-config --cflags --libs`
生成する、オブジェクトファイル名を変更したい場合じゃ以下のように。
g++ -o window main.cpp `sdl2-config --cflags --libs`
以下のコマンドで、行なっているコマンドの詳細を確認できます。
$ sdl2-config --cflags --libs
-I/usr/local/include/SDL2 -D_THREAD_SAFE -L/usr/local/lib -lSDL2
といった訳で、今回は最小限でSDL2.0で、ウィンドウを立ち上げました。
ちょっとしたグラフィック作成に良いですね。
ではではぁ。