このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

Mac Home brewでSDL2.0を簡単に環境設定

C

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で、ウィンドウを立ち上げました。

ちょっとしたグラフィック作成に良いですね。

ではではぁ。

Comment

Related Article

Mac(gcc)で、C言語関数 getch関数を使う。

2020.12.05

Mac Home brewでSDL2.0を簡単に環境設定

2020.06.24

C言語 配列

2016.07.04

C言語 繰り返し文

2016.07.03

C言語 if文・switch文・論理演算子

2016.07.02

C言語の基礎・基本

2016.07.01

Macでの C・C++言語 のエディタ・IDE選び

2016.07.01

CATEGORY LIST

LATEST NEWS

単一ファイル毎に管理できる ファイルマネージャー CLI「coppeno」 v0.7.2リリース!

tool

2021.11.20

M1 Macで作る、ファミコンソフトプログラミング。 アセンブラでハローワールド編

Game

2021.11.08

う、動くぞ! M1 Mac(Big Sur)で PS2ソフトを遊ぶ。PCSX2 Mac版を起動

Game

2021.11.07

ゲオ 驚異の80%オフセール開催中! 中古ソフト大量購入!! まだ間に合う急げぇ〜!

Game

2021.10.24

【M1 Mac】dotnet ef ツールで、MySQLを scaffoldする。

C#

2021.10.17

『2Dスマホゲームにおける圧縮テクスチャ』『膨大になったDBを何とかする』9月30日(木)【オンライン開催イベント】

イベント

2021.09.24

バキバキ画面割れ、バッテリー膨張している iPhoneXを修理した話

iPhone

2021.09.05

Macのデータ復旧を簡単に! EaseUS Data Recovery Wizard for Mac Pro を使用してみた。

tool

2021.08.24

パーティション管理ソフト「MiniTool Partition Wizard」を使ってみた。

tool

2021.08.18

【2021】ゲオのサマーセール 980円以下のゲームソフトが半額!8月16日(月)まで。で購入したもの。

Game

2021.08.08

M1 Macで始める「ゼロからのOS自作入門」- 第1章

自作OS

2021.07.24

2021年6月 Amazonプライムデーで購入したもの。(今更)

イベント

2021.06.30

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US