このサイトは、只今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

Go言語でAssetsもシングルバイナリ化に便利な packr パッケージ

go

2020.11.25

Maker Faire Tokyo 2020に行ってきました。

イベント

2020.10.06

パックマン 解析プログラム動画から見る 追跡アルゴリズム

AI・Bot・algorithm

2020.09.23

Django (DRF)で、ユーザーのモデルを作成時にハッシュidを別で保存する。

Python

2020.09.10

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

Game

2020.08.13

Webassembly用いて、SDL 2.0をブラウザでレンダリング

C++

2020.08.10

macOS pyenv環境でtkinterが動かないので、再度インストール

Python

2020.08.09

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

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US