[Obj-C] 09 GUIアプリ : Python/C API用Makefile

[M1 Mac, Big Sur 11.6.5, no Xcode]

Python/C APIに対応したCMakeLists.txtの書き方が分からないので、Makefileに戻ってきました。小回りの効くところがMakefileの強みですね。

プロジェクトのファイルが増えてFinderが見にくくなったため、include、obj、src、binディレクトリを作成して配置し直しています。

Objective-Cでアプリを作れるようになったのは嬉しいですが、それよりもXcodeを起動せずにここまでやれたことの方が喜びが大きいです。

# コンパイラ
COMPILER = clang
DEBUG = -g

# オプション
CFLAGS = $(shell python3-config --includes)
LDFLAGS = $(shell python3-config --ldflags) -framework Cocoa

# includeパス(-I)
INCLUDE = -I./include -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10

# ライブラリパス(-l)
LIBRARY0 = -lpython3.10

# 優先ライブラリパス(-L)
LIBRARY = -L/Library/Frameworks/Python.framework/Versions/3.10/lib

# ソースファイル
SRCDIR = ./src
SRCS = $(SRCDIR)/XlsxConvertor.m $(SRCDIR)/process.m

# オブジェクトファイル
OBJDIR = ./obj
OBJS = $(OBJDIR)/XlsxConvertor.o $(OBJDIR)/process.o

# 実行ファイル
TARGETDIR = ./bin
TARGET = XlsxConvertor

# コンパイル
$(OBJDIR)/XlsxConvertor.o: $(SRCDIR)/XlsxConvertor.m
	$(COMPILER) $(CFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<

$(OBJDIR)/process.o: $(SRCDIR)/process.m
	$(COMPILER) $(CFLAGS) $(INCLUDE) $(DEBUG) -o $@ -c $<

# ビルド
$(TARGET):$(OBJS)
	$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LDFLAGS) $(LIBRARY0) $(LIBRARY)

# ファイル削除&コンパイル
.PHONY : all
all: clean $(TARGET)

# ファイル削除
.PHONY : clean
clean:
	rm -rf $(OBJS) $(TARGETDIR)/$(TARGET)

# CMake用
.PHONY : test
test:
	rm -rf build/*
	cd /XlsxConvertor/build && cmake .. && make