[M1 Mac, Big Sur 11.6.4, FLTK 1.3.8]
Makefileを更新しました。
“fltk-config –post”コマンドではMakefileと実行ファイルが同じディレクトリにないとappファイル内に作成されるInfo.plistの内容がおかしくなります。相対パスがMakefile基準なので修正する必要があります。
そのため一旦作成されたInfo.plistを修正するコマンドを追加しました。iconファイルを設定するキーも追加しています。
# コンパイラ設定他
COMPILER = clang++
DEBUG = -g
# フラグ設定
CXXFLAGS = $(shell fltk-config --use-gl --use-images --cxxflags ) -std=c++11
LDFLAGS = $(shell fltk-config --use-gl --use-images --ldflags ) -lc++
# includeパス設定
INCLUDE = -I../include -I/opt/homebrew/Cellar/fltk/1.3.8/include
# linkパス設定
LINK = -L/opt/homebrew/Cellar/jpeg/9e/lib -L/opt/homebrew/Cellar/libpng/1.6.37/lib
# 実行ファイル設定
TARGET = test
TARGETDIR = ../bin
# ソースコードパス
SRCROOT = .
# oファイルの出力ディレクトリ
OBJROOT = ../obj
# ソースディレクトリのリスト化
SRCDIRS := $(shell find $(SRCROOT) -type d)
# ソースディレクトリから全てのcppファイルをリスト化
SOURCES = $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.cpp))
# cppファイルのリストからオブジェクトファイル名を設定
OBJECTS = $(addprefix $(OBJROOT), $(patsubst ./%,/%,$(SOURCES:.cpp=.o)))
# oファイルの出力ディレクトリをリスト化
OBJDIRS = $(addprefix $(OBJROOT), $(patsubst ./%,/%,$(SRCDIRS)))
# 依存dファイルをoファイルから作成
DEPENDS = $(OBJECTS:.o=.d)
# 依存ファイル
-include $(DEPENDS)
# cppファイルからoファイル作成
$(OBJROOT)/%.o: $(SRCROOT)/%.cpp
@if [ ! -e `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(COMPILER) $(CXXFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<
# アプリファイル作成関連
POSTBUILD = fltk-config --post
# oファイルから実行ファイルとappファイル作成
$(TARGET): $(OBJECTS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJECTS) $(LINK) $(LDFLAGS)
$(POSTBUILD) $(TARGETDIR)/$@
mkdir $(TARGETDIR)/$(TARGET).app/Contents/Resources
cp ../images/test.icns $(TARGETDIR)/$(TARGET).app/Contents/Resources
plutil -replace 'CFBundleExecutable' -string "test" $(TARGETDIR)/$(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleIconFile' -string "test.icns" $(TARGETDIR)/$(TARGET).app/Contents/Info.plist
plutil -replace 'CFBundleIdentifier' -string "org.fltk.test" $(TARGETDIR)/$(TARGET).app/Contents/Info.plist