[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]
将棋エンジン”技巧2″のMakefileを参考に改良しました。とりあえずカラーアプリMac版をビルドできるようにしました。
GNU Makeはクセが強くてまだまだ修得したとは言えないレベルですが、大分マシになったと思います。
## General Settings(MacOSのみ)
# フラグ設定
CPPFLAGS = -std=c++17
LDFLAGS =
# includeパス(-I)
INCLUDE = -I./include -I/opt/homebrew/Cellar/libpng/1.6.37/include -I/usr/local/include \
-I/Volumes/DATA_m1/code/cpp/mylib/include
# ライブラリパス(-l)
LIBRARY_l = /Volumes/DATA_m1/code/cpp/mylib/lib/Funcs.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/ColorConvert.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/CharExtract.a \
/opt/homebrew/Cellar/fltk/1.3.8/lib/libfltk.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/csvProcessChar.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/Split.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/csvProcessString.a \
/Volumes/DATA_m1/code/cpp/mylib/lib/csvProcessChar.a
# ライブラリパス(-L)
LIBRARY_L =
## Compiler and Target Specific Settings
# MacOS [make mac]
ifeq ($(TARGET), mac)
COMPILER = clang++
CPPFLAGS +=
LDFLAGS += -lc++ -framework Cocoa -w
endif
# MacOS(開発モード) [make macdev]
ifeq ($(TARGET), macdev)
COMPILER = clang++
CPPFLAGS += -g -DDEV
LDFLAGS += -lc++ -framework Cocoa -w
endif
# Windows [make win]
ifeq ($(TARGET), win)
COMPILER = g++
CPPFLAGS += -DWIN32
LDFLAGS += -static -lstdc++ -lgcc -lole32 -loleaut32 -luuid -lwsock32 -lgdi32 -lcomctl32 -mwindows
LIBRARY_L += -L"C:\MinGW\mingw64\lib"
ICON = .\images\icon.res
endif
# Windows(開発モード) [make windev]
ifeq ($(TARGET), windev)
COMPILER = g++
CPPFLAGS += -DWIN32 -Og -g
LDFLAGS += -static -lstdc++ -lgcc -lole32 -loleaut32 -luuid -lwsock32 -lgdi32 -lcomctl32
LIBRARY_L += -L"C:\MinGW\mingw64\lib"
ICON = .\images\icon.res
endif
## Default Settings(MacOSのみ)
# ソースファイル
SRCDIR = ./src
SRCS = $(shell find $(SRCDIR) -type f)
# オブジェクトファイル
OBJDIR = ./obj
OBJS = $(addprefix $(OBJDIR), $(patsubst ./src/%.cpp,/%.o,$(SRCS)))
# 実行ファイル
BINDIR = ./bin
APP = ColorSampleJP
APPWIN = ColorSampleJP
# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(COMPILER) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<
# アプリファイル作成関連
POSTBUILD = fltk-config --post
## Public Targets
.PHONY: mac macdev win windev
mac macdev:
rm -rf $(OBJS) $(BINDIR)/$(APP) $(APP).app
$(MAKE) TARGET=$@ $(APP)
win windev:
del \Q $(OBJS) $(BINDIR)\$(APPWIN).exe
$(MAKE) TARGET=$@ $(APPWIN)
## Private Targets
# MacOS(oファイルから実行ファイルとappファイル作成)
.PHONY: $(APP)
$(APP):$(OBJS)
$(COMPILER) -o $(BINDIR)/$@ $(OBJS) $(LIBRARY_l) $(LIBRARY_L) $(LDFLAGS)
cp $(BINDIR)/$(APP) $(APP)
$(POSTBUILD) $(APP)
mkdir $(APP).app/Contents/Resources
cp ./images/$(APP).icns $(APP).app/Contents/Resources
plutil -insert 'CFBundleIconFile' -string $(APP).icns $(APP).app/Contents/Info.plist
rm -f $(APP)
# Windows(oファイルからexeファイル作成)
.PHONY: $(APPWIN)
$(APPWIN):$(OBJS)
$(COMPILER) -o $(BINDIR)\$@ $(OBJS) $(LIBRARY_l) $(LIBRARY_L) $(LDFLAGS) $(ICON)