[M1 Mac, Monterey 12.6.3, clang 13.0.0, SDL 2.26.2, ChatGPT Plus, NO IDE]
FLTKのfltk-configコマンドで実行ファイルからappファイルを作成できます。SDLアプリでも使えました。
appファイルの中に実行ファイルが格納されており、icnsファイルやInfo.plistをコピーすると完成になります。
fltk-configではなく正式な方法でappファイルを作成できるようにしたいところです。
# コンパイラ設定他
COMPILER = clang++
DEBUG = -g
# フラグ設定
CPPFLAGS = $(shell pkg-config sdl2 --cflags --libs) -std=c++11
LDFLAGS =
# includeパス(-I)
INCLUDE = -I./include -I/opt/homebrew/Cellar/sdl2/2.26.2/include \
-I/opt/homebrew/Cellar/sdl2_ttf/2.20.2/include \
-I/Volumes/DATA_m1/code/cpp/mylib/include \
# ライブラリ(-l)
LIBRARY0 = -lsdl2 -lsdl2_ttf
# ライブラリパス(-L)
LIBRARY = -L/opt/homebrew/Cellar/sdl2/2.26.2/lib \
-L/opt/homebrew/Cellar/sdl2_ttf/2.20.2/lib \
# ソースファイル
SRCDIR = ./src
SRCS = $(shell find $(SRCDIR) -type f)
# オブジェクトファイル
OBJDIR = ./obj
OBJS = $(addprefix $(OBJDIR), $(patsubst ./src/%.cpp,/%.o,$(SRCS)))
# 実行ファイル
TARGETDIR = ./bin
TARGET = TetrisDX
# ICNSファイル
ICON = ./images/TetrisDX.icns
# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(COMPILER) $(CPPFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<
# appファイル作成関連(FLTK以外のアプリにも使える)
POSTBUILD = fltk-config --post
# oファイルから実行ファイル作成
$(TARGET):$(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LIBRARY) $(LDFLAGS)
cp $(TARGETDIR)/$(TARGET) $(TARGET)
$(POSTBUILD) $(TARGET)
mkdir $(TARGET).app/Contents/Resources
cp ./images/$(TARGET).icns $(TARGET).app/Contents/Resources
plutil -insert 'CFBundleIconFile' -string $(TARGET).icns $(TARGET).app/Contents/Info.plist
rm -f $(TARGET)
# 全ソース・コンパイル&ビルド
.PHONY:all
all: clean $(OBJS) $(TARGET)
# oファイル・実行ファイル削除
.PHONY:clean
clean:
rm -rf $(OBJS) $(TARGETDIR)/$(TARGET)