[M1 Mac, Monterey 12.6.3, clang 13.0.0, SDL 2.26.2, ChatGPT Plus, NO IDE]
前回の続きです。
シェルスクリプトの内容を見られたくない場合はshcコマンドでバイナリ化します。
shcコマンドはshファイルをC言語に変換しコンパイルしてくれます。C言語のコードも同時に生成しますので、内容を解析するのも一興です。
chmodコマンドによるアクセス権限付与はいらなくなります。
# shcをインストール
homebrew install shc
# shファイルをバイナリ化(.xが末尾に付く)
shc -f shファイル
# 実行ファイル
TARGETDIR = ./bin
TARGET = TetrisDX
# oファイルから実行ファイル作成(makeApp.sh.xはmakeAppにリネーム)
$(TARGET):$(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LIBRARY) $(LDFLAGS)
cp $(TARGETDIR)/$(TARGET) $(TARGET)
./sh/makeApp $(TARGET)
#!/bin/sh
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