2013年10月17日

【iPhone】64bitの静的ライブラリをビルドする方法



arm64を追加したユニバーサルライブラリをビルドする方法を書いていきます。



まず、今までのarmv7 armv7s向けにビルドします。

xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdk iphoneos -target StatisLibrary clean build ARCHS="armv7 armv7s" IPHONEOS_DEPLOYMENT_TARGET='4.3' TARGET_BUILD_DIR='./build-arm' BUILD_PRODUCT_DIR='./build-arm'

次に、arm64向けにビルドします。

xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdk iphoneos -target StatisLibrary clean build ARCHS="arm64" IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR='./build-arm    64' BUILD_PRODUCT_DIR='./build-arm64'

次に、i386(32bit版シミュレータ)向けにビルドします。

xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdk iphonesimulator -target StatisLibrary clean build ARCHS="i386" IPHONEOS_DEPLOYMENT_TARGET='4.3' TARGET_BUILD_DIR='./build-i386' BUILD_PRODUCT_DIR='./build-i386'

最後に、x86_64(64bit版シミュレータ)向けにビルドします。

xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdk iphonesimulator -target StatisLibrary clean build ARCHS="x86_64" VALID_ARCHS="armv7 armv7s arm64 i386 x86_64" IPHONEOS_DEPLOYMENT_TARGET='4.3' TARGET_BUILD_DIR='./build-x86_64' BUILD_PRODUCT_DIR='./build-x86_64'


終わったら、lipoでがっちゃんこします。

lipo -create ./build-arm/libStaticLibrary.a ./build-arm64/libStaticLibrary.a ./build-i386/libStaticLibrary.a ./build-x86_64/libStaticLibrary.a -output "build/libStaticLibrary.a"

と、こんな感じで出来上がります。

VALID_ARCHSはプロジェクトに設定してあれば、xcodebuildのパラメータに追加する必要は無いですが、
無ければ(x86_64とかarm64)、引数に追加すればプロジェクトを修正する必要はありません。


試して見て下さい。