[C++] 書籍『ゲームプログラミングC++』Chapter01 Makefile

[M1 Mac, Big Sur 11.6.5]

苦行のようなFLTKアプリ開発がひと段落したので、しばらくはゆるく過ごします。

『ゲームプログラミングC++』という本を購入しました。サンプルコードをいじりながら、楽しく学んでいきます。

Visual StudioやXCodeを使わないノンIDE派の手作り好きなので、以下のMakefileを走らせてコンパイル&ビルドしています。

# コンパイラ設定
COMPILER = clang++
DEBUG = -g

# フラグ設定
CPPFLAGS = $(shell pkg-config sdl2 --cflags --libs) -std=c++11
LDFLAGS =

# includeパス(-I)
INCLUDE = -I/opt/homebrew/Cellar/sdl2/2.0.20/include

# ライブラリパス(-l)
LIBRARY_l = -lsdl2

# 優先ライブラリパス(-L)
LIBRARY_L = -L/opt/homebrew/Cellar/sdl2/2.0.20/lib

# ソースファイル
SRCDIR = .
SRCS = $(SRCDIR)/Main.cpp $(SRCDIR)/Game.cpp

# オブジェクトファイル
OBJDIR = .
OBJS = $(OBJDIR)/Main.o $(OBJDIR)/Game.o

# 実行ファイル
TARGETDIR = .
TARGET = Game01MOD

# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/Main.o: $(SRCDIR)/Main.cpp
	$(COMPILER) $(CPPFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<

$(OBJDIR)/Game.o: $(SRCDIR)/Game.cpp
	$(COMPILER) $(CPPFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<

# oファイルから実行ファイル作成
$(TARGET):$(OBJS)
	$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY_l) $(LIBRARY_L) $(LDFLAGS) 

# 全ソース・コンパイル&ビルド
.PHONY:all
all: clean $(TARGET)

# oファイル&実行ファイル削除
.PHONY:clean
clean:
	rm -rf $(OBJS) $(TARGETDIR)/$(TARGET)