[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