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

Archives Details

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

C

2020.06.24

どもです。

そろそろ、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 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

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

C

2020.06.24

Django django-rest-auth + Nuxt.js auth-module で作る SPA JWT OAuth ログインシステム その3

Python

2020.06.14

Django django-rest-auth + Nuxt.js auth-module で作る SPA JWT OAuth ログインシステム その2

Python

2020.06.08

Django django-rest-auth + Nuxt.js auth-module で作る SPA JWT OAuth ログインシステム その1

Python

2020.06.07

このコロナ禍で、飛沫感染防止など求められる中「電子メモパッド」が重宝。 1300円で購入可能な電子メモパッドが超絶便利な件。

tool

2020.06.02

OAuthのフローを可視化できるツールを作ってみました。

JavaScript

2020.05.17

Django django-allauthで、サクッとソーシャルログイン機能を実装

Python

2020.04.12

部下を育てる技術

イベント

2020.04.08

令和の時代に、JavaScriptで Shift-JISファイル作成 全銀データフォーマットに対応する。

JavaScript

2020.03.03

インターネットにて世論調査を行う「世論Web」サービスを始めてみました。

JavaScript

2020.01.31

まだ間に合う!!ラズベリーパイ購入なら「RSコンポーネンツ」で!最大40%オフの年に1度の大特価期末セール中!

RaspberryPi

2020.01.25

年末のレトロゲーム熱の際、ファミコンソフト一覧パッケージ作ってました。

JavaScript

2020.01.24

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US