[M1 Mac, MacOS Ventura 13.3.1, clang 14.0.3]
GitHubにあるFl_WebViewをより深く理解するため、ライブラリではなくソースファイル(cpp1個、m1個)としてプロジェクトに取り込み、ビルドしてみました。
プロジェクトのソースファイルはcppファイル14個、mファイル1個で構成されています。
Makefileは以下の通りです。ビルドは成功し、アプリは正常に動作しています。
# コンパイラ
COMPILER = clang++
DEBUG = -g
# オプション
CPPFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -std=c++20
MFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT
LDFLAGS = -lfltk -lpthread -framework Cocoa -framework WebKit -lc++
# includeパス(-I)
INCLUDE = -I./include -I/Volumes/DATA_m1/code/cpp/mylib/include -I/usr/local/include \
-I/opt/homebrew/Cellar/libxml2/2.10.3_2/include
# ライブラリ(-l)
LIBRARY0 = -lcurl -liconv -lxml2
# ライブラリパス(-L)
LIBRARY = -L/usr/local/lib
# ソースファイル
SRCDIR = ./src
SRCS_CPP = $(shell find $(SRCDIR) -type f -name "*.cpp")
SRCS_M = $(shell find $(SRCDIR) -type f -name "*.m")
# オブジェクトファイル
OBJDIR = ./obj
OBJS = $(addprefix $(OBJDIR), $(patsubst ./src/%.cpp,/%.o,$(SRCS_CPP))) \
$(addprefix $(OBJDIR), $(patsubst ./src/%.m,/%.o,$(SRCS_M)))
# 実行ファイル
TARGETDIR = ./bin
TARGET = BBS_Browser
# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(COMPILER) $(CPPFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<
# mファイルからoファイル作成
$(OBJDIR)/%.o: $(SRCDIR)/%.m
$(COMPILER) $(MFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<
# アプリファイル作成関連
POSTBUILD = fltk-config --post
# oファイルから実行ファイルとappファイル作成
$(TARGET):$(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LDFLAGS) $(LIBRARY)
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 $(TARGET)
# 全ファイル削除
.PHONY:clean
clean:
# rm -f $(SRCDIR)/.DS_Store
rm -rf $(OBJS) $(TARGETDIR)/$(TARGET) $(TARGET).app