[M1 Mac, Monterey 12.6.3, clang 13.0.0, SDL 2.26.2, ChatGPT Plus, NO IDE]
前回記事でMakefileで実行ファイルからappファイルを作成できるようにしましたが、そこだけ長ったらしくなるので引数ありシェルスクリプトにしてすっきりさせました。
chmodコマンドでアクセス権限を付与する必要があります。
# シバンは不要
mkdir $1.app
mkdir $1.app/Contents
mkdir $1.app/Contents/MacOS
mv $1 $1.app/Contents/MacOS
mkdir $1.app/Contents/Resources
cp ./images/$1.icns $1.app/Contents/Resources
plutil -create xml1 $1.app/Contents/Info.plist
plutil -insert 'CFBundleInfoDictionaryVersion' -string "6.0" $1.app/Contents/Info.plist
plutil -insert 'CFBundleExecutable' -string $1 $1.app/Contents/Info.plist
plutil -insert 'CFBundleIdentifier' -string "" $1.app/Contents/Info.plist
plutil -insert 'CFBundleName' -string $1 $1.app/Contents/Info.plist
plutil -insert 'CFBundlePackageType' -string "APPL" $1.app/Contents/Info.plist
plutil -insert 'CFBundleIconFile' -string $1.icns $1.app/Contents/Info.plist
plutil -insert 'NSHighResolutionCapable' -bool true $1.app/Contents/Info.plist
# oファイルから実行ファイル作成
$(TARGET):$(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LIBRARY) $(LDFLAGS)
cp $(TARGETDIR)/$(TARGET) $(TARGET)
chmod 777 ./sh/makeApp.sh
./sh/makeApp.sh $(TARGET)
# oファイルから実行ファイル作成
$(TARGET):$(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LIBRARY) $(LDFLAGS)
cp $(TARGETDIR)/$(TARGET) $(TARGET)
mkdir $(TARGET).app
mkdir $(TARGET).app/Contents
mkdir $(TARGET).app/Contents/MacOS
mv $(TARGET) $(TARGET).app/Contents/MacOS
mkdir $(TARGET).app/Contents/Resources
cp ./images/$(TARGET).icns $(TARGET).app/Contents/Resources
plutil -create xml1 $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleInfoDictionaryVersion' -string "6.0" $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleExecutable' -string $(TARGET) $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleIdentifier' -string "" $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleName' -string $(TARGET) $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundlePackageType' -string "APPL" $(TARGET).app/Contents/Info.plist
plutil -insert 'CFBundleIconFile' -string $(TARGET).icns $(TARGET).app/Contents/Info.plist
plutil -insert 'NSHighResolutionCapable' -bool true $(TARGET).app/Contents/Info.plist