[Obj-C++] 12 自製Makefileの改良 実行ファイルおよびappファイル比較

[M1 Mac, Big Sur 11.6.5, clang 13.0.0, no Xcode]

[Obj-C++] 10で書きましたが、自製Makefileで作成した実行ファイルでアプリ起動した場合View範囲に入ると緑色プラスマークが現れるのに対し、appファイルで起動するとマークが出てきません。

検証のため自製Makefileで実行ファイルとappファイルを作成、CMake経由でappファイルを作成できるように改良しました。

これまでと違うのは自製Makefileからappファイルを作成できるところです。ちなみにそのappファイルではプラスマークが出ませんでした。

まとめると以下のようになります。

自製Makefile作成 exeファイル:OK
自製Makefile作成 appファイル:NG
CMake作成 exeファイル:NG
CMake作成 appファイル:NG

どちらでも構わないのでappファイルでプラスマークを出現させたいところです。

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

# オプション
CFLAGS = $(shell python3-config --includes) -std=c++11
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 = $(shell find $(SRCDIR) -type f)

# オブジェクトファイル
OBJDIR = ./obj
OBJS   = $(addprefix $(OBJDIR), $(patsubst ./src%,%,$(SRCS:.mm=.o)))

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

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

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

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

# CMakeからappファイル作成
.PHONY : all
all:
	rm -rf build/* $(SRCDIR)/.DS_Store
	cd /projects/XlsxConvertor/build && cmake .. && make
	mkdir ./build/$(TARGET).app/Contents/Resources
	cp ./images/XlsxConvertor.icns ./build/$(TARGET).app/Contents/Resources
	plutil -replace 'CFBundleIconFile' -string "XlsxConvertor.icns" ./build/$(TARGET).app/Contents/Info.plist

# 自製Makefileから実行ファイル作成
.PHONY : exe
exe: clean $(TARGET)

# 自製Makefileから実行ファイルおよびappファイル作成
.PHONY : exeapp
exeapp: clean $(TARGET)
	mkdir ./app/$(TARGET)
	mkdir ./app/$(TARGET)/Contents
	mkdir ./app/$(TARGET)/Contents/MacOS
	mkdir ./app/$(TARGET)/Contents/Resources
	cp $(TARGETDIR)/$(TARGET) ./app/$(TARGET)/Contents/MacOS
	cp ./Info.plist ./app/$(TARGET)/Contents
	cp ./images/XlsxConvertor.icns ./app/$(TARGET)/Contents/Resources
	plutil -replace 'CFBundleIconFile' -string "XlsxConvertor.icns" ./app/$(TARGET)/Contents/Info.plist
	mv ./app/$(TARGET)/ ./app/$(TARGET).app/

# CMakeからappファイル、自製Makefileから実行ファイル作成
.PHONY : all2
all2:
	make all
	make exe