SDLのバージョン2(2.32.7)をインストールしてみる。
GitHub: libsdl-org/SDL release-2.32.x
インストール
GitHubのドキュメントに従った。
git clone https://github.com/libsdl-org/SDL.git --branch=release-2.32.x
cd SDL
mkdir build
cd build
../configure
make
sudo make install
結果
/usr/local/binにsdl2-configがインストールされた/usr/local/includeにSDL2関連のヘッダファイルがインストールされた/usr/local/libに.laライブラリがインストールされた- その他ビルドシステムの設定がインストールされた
- Autotool用に
/usr/local/share/aclocal/sdl2.m4 - pkg-config用に
/usr/local/lib/pkgconfig/sdl2.pc - CMake用に
/usr/local/lib/cmake/SDL2
- Autotool用に
インストール先の変更
https://wiki.libsdl.org/SDL2/Installationによると、--prefixでインストール先を変更できたらしい。
途中のconfigure時に--prefix=で指定すれば良い。
../configure --prefix=`echo -n ~`/.SDL2/
あとはそのままmake; make installした。
上の/usr/local/に保存されたものを全て消した後、
sudo ln -s `echo -n ~`/.SDL2/bin/sdl2-config /usr/local/bin/sdl2-config
して、sdl2-configは使えるようにした。
実行
ChatGPTに適当なコードを生成させて実行してみる。
#include <SDL.h>
int main(int argc, char *argv[])
{
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
SDL_Log("SDL_Init Error: %s", SDL_GetError());
return 1;
}
SDL_Window *win = SDL_CreateWindow("test screen", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
if (!win)
{
SDL_Log("SDL_CreateWindow Error: %s", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (!ren)
{
SDL_Log("SDL_CreateRenderer Error: %s", SDL_GetError());
SDL_DestroyWindow(win);
SDL_Quit();
return 1;
}
SDL_SetRenderDrawColor(ren, 255, 0, 0, 255);
SDL_bool running = SDL_TRUE;
SDL_Event e;
while (running)
{
while (SDL_PollEvent(&e))
{
if (e.type == SDL_QUIT)
{
running = SDL_FALSE;
}
}
SDL_RenderClear(ren);
SDL_RenderPresent(ren);
SDL_Delay(16); // 60FPS
}
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}NAME = test
SDL2_PREFIX = --prefix=$(HOME)/.SDL2
CFLAGS += `sdl2-config $(SDL2_PREFIX) --cflags`
LDFLAGS += `sdl2-config $(SDL2_PREFIX) --libs`
SRCS = \
main.c \
OBJS = $(SRCS:.c=.o)
run: $(NAME)
./$(NAME)
$(NAME): $(OBJS)
$(CC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS)
%.o: %.c
$(CC) -c $< -o $@ $(CFLAGS)
clean:
rm -f $(OBJS) $(NAME)
.PHONY: clean実行すると、赤く描画されたスクリーンができた。 ×ボタンで終了。
あとがき
結局、brewで配信されていたので、brewでインストールしなおした。