普段自分がTweakを作成するときは、Theosを使用してbuildしています。
Terminalから/opt/theos/bin/nic.plまたは$THEOS/bin/nic.plで何かしらの項目を選択すると、自動的に必要なファイルとMakefileが作成されます。
そのままでもいいのですが、自分がいつも使ってる方法を紹介します。
##Sample
https://github.com/ichitaso/UIRotation9/blob/master/Makefile
PACKAGE_VERSION = $(THEOS_PACKAGE_BASE_VERSION)
GO_EASY_ON_ME := 1
ARCHS = armv7 arm64
LDFLAGS = -Wl,-segalign,0x4000
THEOS_DEVICE_IP = 192.168.0.12
TWEAK_NAME = UIRotation9
UIRotation9_FILES = Tweak.xm UIRController.m
UIRotation9_FRAMEWORKS = Foundation UIKit QuartzCore
UIRotation9_PRIVATE_FRAMEWORKS = GraphicsServices
UIRotation9_LDFLAGS = -lactivator
BUNDLE_NAME = UIRotationSettings
UIRotationSettings_FILES = Preference.m
UIRotationSettings_INSTALL_PATH = /Library/PreferenceBundles
UIRotationSettings_FRAMEWORKS = UIKit Social
UIRotationSettings_PRIVATE_FRAMEWORKS = Preferences
SUBPROJECTS += UIRotationHelper
SUBPROJECTS += UIRotationSwitch
include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/tweak.mk
include $(THEOS_MAKE_PATH)/bundle.mk
include $(THEOS_MAKE_PATH)/aggregate.mk
internal-stage::
$(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END)
$(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/UIRotation.plist$(ECHO_END)
before-package::
sudo chown -R root:wheel $(THEOS_STAGING_DIR)
sudo chmod -R 755 $(THEOS_STAGING_DIR)
sudo chmod 644 $(THEOS_STAGING_DIR)/Library/Switches/UIRotation.bundle/*
after-install::
install.exec "killall -9 SpringBoard"
make clean
sudo rm -rf ./*.zip
sudo mv _ $(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
sudo rm -rf ./_
zip -r $(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm.zip ./$(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
sudo rm -rf ./$(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
rm -rf .obj
rm -rf obj
# rm -rf .theos
# rm -rf *.deb
##先頭の行
PACKAGE_VERSION = $(THEOS_PACKAGE_BASE_VERSION)
こうすることによってTheosで作成したディレクトリ内のcontrolファイルに記載しているバージョンナンバーでコンパイルされます。
GO_EASY_ON_ME := 1
これを記載することによって足りない部分のコードでエラーが出てもMakeできるようになります。
最初は必要なヘッダーファイルなどを記載するのが面倒なので、記述しておくと楽です。
最終的にはMakeするときにエラーが無いようにします。
##中盤
include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/xxx.mk
このように記述することによって、theosへのシンボリックリンクがなくても、.bash_profileに/opt/theosへのリンクを記述していればMakeできるようになります。
$THEOS=/opt/theos
##before-package::
make packageでdebファイルへコンパイルする前にパーミッションと所有者を変更できます。
ただし、BigBossなどへ提出した場合は一度解凍されて独自のツールで再度パッケージを作成されるため、どうしてもパーミッションなどを残しておきたい場合はpostinstに記述しておきましょう。
##after-install::
install.exec "killall -9 SpringBoard"
make clean
sudo rm -rf ./*.zip
sudo mv _ $(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
sudo rm -rf ./_
zip -r $(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm.zip ./$(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
sudo rm -rf ./$(THEOS_PACKAGE_NAME)_$(THEOS_PACKAGE_BASE_VERSION)_iphoneos-arm
rm -rf .obj
このように記述することによって、BigBossやModmyiに提出する際、debファイルではなくzipで中身だけ送ることができるので、公式のリポ側で管理しやすくなるかと思います。
最初はzipの部分は消して、最終的に提出する際にzipで送るといいかと思います。