[M1 Mac, Big Sur 11.6.8, gcc 12.2.0, FLTK 1.3.8, NO IDE]
これまでコンパイラはMacOS標準のClangを使ってきましたが、C++ならGCCでも問題ないので変更してみました。GCCはHomebrewでインストールしました。
Xcodeを使うのであればおのずとLLVM/Clangになります。非IDE派でiOSアプリを作らない者としては特にこだわる必要もありません。
辞典や参考書、公式ドキュメントの類いは情報へのアクセス性や学習効果を考えて紙ベースでも持っておくべきと常々思っていますが、GCCの公式ドキュメントは印刷にも対応できるよう適切なフォントサイズでpdfファイルが用意されています。一方、Clangはフォントサイズがかなり小さく全く配慮していません。
というわけでしばらくGCCで開発を進めていくことにします。
## General Settings
# フラグ設定
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_gcc/include -I/opt/homebrew/Cellar/gcc/12.2.0/include/c++/12
# ライブラリパス(-l)
LIBRARY_l = /Volumes/DATA_m1/code/cpp/mylib_gcc/lib/Funcs.a \
/Volumes/DATA_m1/code/cpp/mylib_gcc/lib/ColorConvert.a \
/Volumes/DATA_m1/code/cpp/mylib_gcc/lib/CharExtract.a \
/opt/homebrew/Cellar/fltk/1.3.8/lib/libfltk.a \
/Volumes/DATA_m1/code/cpp/mylib_gcc/lib/csvProcessChar.a \
/Volumes/DATA_m1/code/cpp/mylib_gcc/lib/Split.a \
/Volumes/DATA_m1/code/cpp/mylib_gcc/lib/csvProcessString.a
# ライブラリパス(-L)
LIBRARY_L =
## Compiler and Target Specific Settings
# MacOS [make all]
ifeq ($(TARGET), all)
COMPILER = g++-12
CPPFLAGS +=
LDFLAGS += -framework Cocoa -w -lstdc++ -lgcc
endif
# MacOS(開発モード) [make dev]
ifeq ($(TARGET), dev)
COMPILER = g++-12
CPPFLAGS += -g -DDEV
LDFLAGS += -framework Cocoa -w -lstdc++ -lgcc
endif
## Default Settings
# ソースファイル
SRCDIR = ./src
SRCS = $(shell find $(SRCDIR) -type f)
# オブジェクトファイル
OBJDIR = ./obj
OBJS = $(addprefix $(OBJDIR), $(patsubst ./src/%.cpp,/%.o,$(SRCS)))
# 実行ファイル
BINDIR = ./bin
APP = ColorSampleJP
# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(COMPILER) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<
# appファイル作成関連
POSTBUILD = fltk-config --post
## Public Targets
.PHONY: all dev
all dev:
rm -rf $(OBJS) $(BINDIR)/$(APP) $(APP).app
$(MAKE) TARGET=$@ $(APP)
## 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)